gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:14:53 29 4
gpt4 key购买 nike

我有一个长时间运行的任务和一个通知用户该任务正在运行的对话框。任务完成后,对话框会通知用户。

我想在使用 AfxBeginThread 创建的 Worker-Thread 中开始任务,当任务完成时,我使用 发布用户消息 WM_APP + 1 PostMessage 到对话框。显然 PostMessage 只能在同一个线程中使用,因此我尝试了 PostThreadMessage 但在我的对话框中使用 ON_THREAD_MESSAGE 时出现编译器错误。

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

谢谢!

最佳答案

您可以使用 PostMessage(),它会起作用。 gui 线程将处理该消息。

我相信 PostMessage 的文档很清楚:

Places (posts) a message in the message queue associated with the thread that created the specified window and returns without waiting for the thread to process the message.

所以,如果worker在一个窗口的消息队列中放置了一条消息,
创建窗口的线程将处理消息。
在您的情况下,它是主(或 gui)线程。

关于multithreading - 如何从另一个线程通知 CDialog 对象有关已完成的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5497674/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com