在工作线程的主线程中运行一些代码
问题描述:
我必须发信号通知主线程从一个工作线程运行一些代码。在工作线程的主线程中运行一些代码
由于某些COM问题(在线程上运行它只是失败),该代码必须在主线程中运行。
我开始用的消息和事件(我需要等待代码之前盼着去执行)当我remebered有一些非常简单和直接的方式去做Java和SWT)
来实现它display.syncExec (new Runnable() {
public void run() {
if (!myWindow.isDisposed())
myWindow.redraw();
}
对MFC和windows一般情况类似吗?
答
您可以使用PostThreadMessage WinAPI函数将WM_USER
消息发送给主线程。然后你可以在主线程中处理WM_USER
并执行一些必要的操作。
+1
请勿将PostThreadMessage用于也显示用户界面的线程。任何模态循环都会导致这样的消息陷入位桶中。如调整窗口大小时使用,显示消息框,显示对话框。使用PostMessage()。 – 2011-01-14 19:05:20
Lishi,别忘了管理你的线程上的消息泵! – 2011-01-22 14:22:13