今天解决的一个问题,记录下,以备后用。

问题描述:WinForm程序有超时自动退出功能,但是有些模态对话框不关掉的话会退出失败,原因(猜测):

程序倒计时用的System.Windows.Forms.Timer,相应Tick事件,判断这个Timer在主UI线程上跑,所以模态对话框会阻止UI线程。

问题解决思路:

1.开始尝试用后台线程启模态对话框,不科学。

2.新启一个System.Threading.Thread.Timer,设置一个全局变量 bool isCartTimeout, 这个后台的timer线程来监控 isCartTimeout, 如果是true,则跨线程去杀所有打开的form.

遗留问题:

SaveFileDialog如果开启,程序退出还是由问题,有待改进。

程序代码稍后整理上传。

-----

还有就是今天复习了下Dispose和 set object = null 的区别

简单区别如下:

set object = null 意思是把占用的资源(内存释放),等待GC回收。

Dispose 立即释放资源,并调用GC回收。

以上只是初步认识,有待改进。

04-27 03:02