某些数据处理时 MFC 应用程序 gui 挂起
Posted
技术标签:
【中文标题】某些数据处理时 MFC 应用程序 gui 挂起【英文标题】:MFC application gui hangs when some data processing 【发布时间】:2015-05-20 11:43:45 【问题描述】:我有带有 GUI 的应用程序,但是当我单击实际上可以完成所有工作的按钮时,它会挂起。如何使其正常运行并“在线”显示 gui 更改?
【问题讨论】:
将处理卸载到工作线程。您的 GUI 代码是单线程的(无论如何我希望如此)。 那么它将如何更新一些主窗口信息? 线程间通信。这两个问题的答案都超出了本网站所能想象的详细程度。 【参考方案1】:如果您不想使用后台线程并且它是某种循环需要很长时间,您可以将此成员函数添加到您的 UI 代码中并在循环中调用它:
void CMyDlg::PumpMessages()
// Must call Create() before using the dialog
ASSERT(m_hWnd!=NULL);
MSG msg;
// Handle dialog messages
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
if(!IsDialogMessage(&msg))
TranslateMessage(&msg);
DispatchMessage(&msg);
【讨论】:
以上是关于某些数据处理时 MFC 应用程序 gui 挂起的主要内容,如果未能解决你的问题,请参考以下文章
zmq_ctx_destroy() 在 MFC dll 中挂起
将 MFC Gui 应用程序包装到 .NET 互操作的 DLL(或其他东西)中