C#项目总结

启动时控件报错

应该在FormLoad事件中处理界面相关的事务

在线程中更新控件的值

CheckForIllegalCrossThreadCalls = false;有风险,禁用,多线程会造成程序崩溃,

可以通过delegate方式解决,在多线程中,也可以更改控件的值

1、声明delegate       

    public delegate void SpectraInvoke();

2、定义变量

    SpectraInvoke plotIVK;

3、变量指向某个函数,该函数可以更改控件的值

界面初始化的位置和尺寸

this.StartPosition = FormStartPosition.CenterScreen;将界面放置于屏幕中心

this.Width =Convert.ToInt32( this.Width*1.4);修改界面的长宽

程序自动点击按键

  StartB_Click(new object(), new EventArgs());

多任务中取消任务的做法

CancellationTokenSource cts ;
Task Scan;

cts = new CancellationTokenSource();

Scan = new Task(ScanTask);
Scan.Start();

多线程Invoke引起死机

 点击停止按钮,主线程等待后台线程是否结束,但是多线程用了Invoke,它等待主线程空闲时执行,因此会一直等待主线程。造成司机。实测改成BeginInvoke会引起严重错误。

解决办法:在长时间运行后,Invoke前加退出

posted @ 2019-07-29 08:56  得一寸  阅读(387)  评论(0编辑  收藏  举报