【发布时间】:2013-09-13 16:47:14
【问题描述】:
在 MFC 项目中,我的主线程专注于对话框。另一个工作线程专注于从服务器接收数据,解析数据并将数据更新到数据库中。
来自服务器的数据非常庞大。所以我在工作线程未完成时通过单击关闭按钮来破坏对话框。但是工作线程不是独立的。当我删除主线程中创建的对象时,工作线程无法继续,也就是说。一些错误,例如访问冲突问题。 (因为工作线程使用了 xxxxdialog 类中的成员变量)。
我创建线程的方式是AfxBeginThread,我用的是waitforsingleobject的方法,还是不行……
我不想强行杀死工作线程,否则会导致内存泄漏...
【问题讨论】:
-
所以,在对话框被销毁之前,需要关闭工作线程。这通常通过设置事件并等待线程句柄来完成。线程必须定期检查事件状态并在事件发出信号时立即退出。
-
也许你不应该在工作线程的对话框类中使用成员变量,那么。分离 GUI 和逻辑。
-
非常感谢,我解决了问题...
标签: c++ multithreading mfc