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前加退出