提问人:snowdev 提问时间:11/2/2023 最后编辑:Andreas Rejbrandsnowdev 更新时间:11/2/2023 访问量:145
在 Delphi 中使用线程进行消息队列
Message queueing with threads in Delphi
问:
我是消息队列的新手,想要实现如下内容:
从主线程获取信息
发送到工作线程队列
工作线程可能只是处理它或发送到另一个工作线程处理它
由于某些事件,最终回调执行到 UI(可以使用同步机制处理它)
我的主要问题是如何在主线程和工作线程之间以及工作线程与其他工作线程之间进行通信(为了最终向主线程发出信号,我可以回调然后同步)。
经过大量的谷歌搜索,我基本上找到了两种方法:
- 创建一个 message-only ,用于在已注册的函数之间交换消息。我在这里找到了一个完美的例子。正如 Remy Lebeau 所评论的那样,这种方式可能需要通过以下方式发送消息(而且似乎是更冗长的方式)。这样基本上我就使用函数并处理函数中的消息。
HWND
WndProc()
DispatchMessage()
PostMessage()
WndProc()
艺术
- 使用 |循环,用于处理线程消息并处理其方法中需要执行的操作。这个基本上我在线程的方法中使用函数和处理消息;
TThread
PeekMessage()
GetMessage()
Execute()
PostThreadMessage()
Execute()
我成功地测试了两个选项的基本演示,以我提到的两种方式接收消息。
对于那些拥有更多专业知识的人来说,我走在正确的轨道上吗?我是否错过了试图理解如何做到这一点的东西?
对于那些更有经验的人来说,另一个问题是,哪种方法最适合繁重的消息交换?哪个最适合 X 情况或 Y 情况?
这是一个更理论化的问题,但感谢那些可以提供帮助的人。
答: 暂无答案
评论
PostMessage()
PeekMessage()|GetMessage()
Execute()
PostThreadMessage()