从工作线程中更新AllViews()?

时间:2010-04-03 18:30:10

标签: multithreading mfc visual-c++ docview

我在一个由ChildView拥有的类中有一个工作线程。 (我打算最终将它移到Doc。)当工作线程完成任务时,我希望更新所有视图。如何拨打电话告诉Doc发布UpdateAllViews()?或者有更好的方法吗?

谢谢。


由OP添加:我正在寻找一个简单的解决方案。该应用程序在单个用户的单CPU计算机上运行,​​不需要网络(或Internet)访问。没有什么可以导致僵局。

我想我希望工作线程发布(或发送)一条消息以使视图更新。

我读到的关于线程的所有内容似乎都比我需要的更复杂 - 而且,是的,我理解所有这些预防措施对于在多处理器,多用户,客户端 - 服务器系统等中运行的应用程序是必需的。但是没有一个适用于我的情况。

我只是坚持正确组合获取窗口句柄,发布消息并在正确的函数和类中响应消息以进行编译和运行。

1 个答案:

答案 0 :(得分:2)

UpdateAllViews不是线程安全的,因此您需要封送对主线程的调用。 我建议您signal一个manual-reset event标记您的主题完成情况,并在WM_TIMER处理程序中标记check the event's status

建议阅读: