1、问题引入
项目开发过程中,从界面触发某个事件,有网络模块响应处理。界面由高优先级线程处理,耗时逻辑由低优先级线程处理。由于界面弹窗是模态的,后续界面切换需要先关闭弹窗。我在其他线程中调用关闭函数,这样可以关闭模态弹窗,也可以该线程中处理其他耗时任务。但是会偶现崩溃。
2、原因
多线程中处理模态窗口时,界面线程处理界面事务,不可以跨线程处理。可能导致窗口崩溃,模态窗口显示的时候,除了父窗口不可用之外,其他的窗口都是可用的,如果需要的一个资源在别的地方被释放了,而在模态窗口中使用的时候,没有判断可能就会导致崩溃。