如何从另一个线程通知CDialog对象有关已完成的任务?

Chr*_*mer 2 winapi mfc multithreading

我有一个长时间运行的任务和一个Dialog,它通知用户此任务正在运行.任务完成后,Dialog会通知用户.

我认为与创建的工作线程中开始任务AfxBeginThread,并在任务完成后我用户的消息WM_APP + 1PostMessage该对话.看起来PostMessage只能在同一个线程中使用,因此我尝试PostThreadMessage但在使用ON_THREAD_MESSAGEDialog 时遇到了编译器错误.

现在我不知道如何继续.你有什么建议吗?

谢谢!

Nic*_*kis 5

你可以使用PostMessage(),它会工作.gui线程将处理该消息.

我相信PostMessage的文档很清楚:

在与创建指定窗口的线程关联的消息队列中放置(发布)消息,并返回而不等待线程处理消息.

因此,如果工作人员在窗口的消息队列中放置消息,则
创建窗口的线程将处理该消息.
在你的情况下,它是主要(或gui)线程.