今天解决的一个问题,记录下,以备后用。
问题描述: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回收。
以上只是初步认识,有待改进。