关于work线程与UI线程同步的问题
夜行人 2013-08-31 10:21:23 简单描述一下:
程序中有些连续性的动作会执行很长时间,在此期间界面会卡死,所以开了个线程去执行,但是在执行过程中如果用户关闭了UI窗口,怎么办?
简单分析如下:
1.UI线程等待work线程结束后再结束自己,但是work线程执行的任务有可能时间过长,这位就造成用户选择了关闭,界面有过很长时间才会响应,不可取。
2.UI线程结束时调用TerminateThread结束子线程,可以是可以,不过会造成大量内存泄漏,不可取。
3.UI线程直接退出,让work线程正确执行完成自动退出,这个方法是大家比较提倡的,可是问题随之而来,work线程里要大量地访问UI线程里的资源,如果UI线程一旦退出,就会崩掉。最后我试着用了些全局变量,问题是改善了一些,但是不可能所有资源全部定义成全局的,有什么改善方法吗?
4.还有什么其他的思路吗?
恭候大牛赐教。