【问题标题】:Sending message to different thread将消息发送到不同的线程
【发布时间】:2009-11-24 09:50:36
【问题描述】:

是否有任何 API 可以将消息发送到线程? 基本上我只有 threadId 可用,我想向该线程发送自定义消息。

【问题讨论】:

  • 您使用的是什么线程模型? WinAPI?线程?

标签: c++ windows winapi multithreading


【解决方案1】:

PostThreadMessage。不过不是很可靠。

有关原因的详细信息,请参阅旧新事物博客 herehere。基本上,模态消息循环使整个想法变得一团糟。由于发布到线程的消息没有窗口句柄,因此调用 DispatchMessage 会将消息丢弃。您运行的任何模态循环 - 直接或间接 - 都会调用 DispatchMessage,因此该策略在很大一部分时间会失败并且您的消息将消失在以太中。

【讨论】:

  • 这两篇文章中最重要的一句话:“如果您需要与同时显示 UI 的线程进行可靠通信,请创建一个隐藏窗口并向该窗口发送或发布消息。”
  • 当然,如果你只有一个ThreadId,那么这个建议也行不通。
【解决方案2】:

如果目标线程是可警告的,你可以使用QueueUserAPC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2018-02-01
    相关资源
    最近更新 更多