将消息发送到不同的线程

Posted

技术标签:

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

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

【问题讨论】:

您使用的是什么线程模型? WinAPI?线程? 【参考方案1】:

PostThreadMessage。不过不是很可靠。

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

【讨论】:

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

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

【讨论】:

以上是关于将消息发送到不同的线程的主要内容,如果未能解决你的问题,请参考以下文章

discord selfbot 将相同的消息发送到不同服务器的不同通道

使用 SMTP PHPMailer 将不同的消息发送到不同的电子邮件帐户

触发不同的传感器线程将数据发送到同一个套接字?

如何将消息/数据从广播接收器(process1)发送到android中的服务线程(process2)?

Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)(子线程 与 子线程之间)

多线程代码中 QSerialPort 的 Qt 错误:QCoreApplication::sendEvent:“无法将事件发送到不同线程拥有的对象