在工作线程完成MFC时禁用控制变量

Disabling control variable while worker thread is finishing MFC

本文关键字:控制变量 MFC 工作 线程      更新时间:2023-10-16

我正在使用Visual Studio 2015开发一个基于对话框的MFC应用程序。基本上,我的问题是,我有一个按钮,在用户选择了必要的输入(.csv文件将被解析并放入不同的向量)后,它将启动一个工作线程。为了避免复杂情况,我决定用户在工作线程完成计算之前无法按下此按钮或输入按钮。我尝试了WaitforSingleObject选项,但在等待工作线程完成时,无法保持主线程或MFC应用程序运行。这个问题还有其他解决办法吗?我感谢你的帮助。

您的工作线程可以向UI线程返回一条完成消息。在这种情况下,您的UI线程不需要特殊的消息循环,相反,您的窗口过程会在收到该消息时重新启用按钮。

您可以使用MsgWaitForMultipleObjects函数:https://msdn.microsoft.com/en-us/library/windows/desktop/ms684242(v=vs.85).aspx

ATL在AtlWaitWithMessageLoop中使用它(https://msdn.microsoft.com/en-us/library/26hwk2bx.aspx)。