c# - 如何在 .NET 的非 UI 线程中实现消息泵?

标签 c# multithreading message

我正在阅读此博客:Use Threads Correctly ,我想知道:

如何在非 UI 线程中实现消息(注意:我指的不是 Windows 消息)?

我想要的是消息可以是对象或命令,比如说 Action<T>/Func<T> , ETC。 我是否必须为不同类型的消息使用单独的队列?假设一个队列用于对象,一个队列用于 Action<T>/Func<T>

消息类型不同,如何实现?

编辑:

我要完成的是一个生产者/消费者模型,生产者/消费者共享队列进行通信,队列中不仅可以包含消费者消费的对象,还可以包含一些'命令'传递给消费者执行。

最佳答案

术语“消息泵”特指 Windows 中的 GUI 线程(即使它们实际上并不创建 GUI)。

听起来您可能在谈论消息队列,但即使是消息队列也不会接受操作功能,它将接受特定类型的消息

我当然从未听说过通过 Func<T>到消息队列 - 结果会怎样?你要把它存放在某个地方吗?向调用者发回消息?它对我来说似乎不是很有用。

无论您尝试做什么,内置的 .NET 线程池似乎都能更好地处理它。这实际上是为异步执行代码而设计的,而不是排队和处理消息

关于c# - 如何在 .NET 的非 UI 线程中实现消息泵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613932/

相关文章:

c# - 使用 Reg-Free-COM 时,事件未发送到基于 WPF 的 ActiveX 控件(COM 互操作)

C# 泛型约束问题

c# - 为什么我的符号 (pdb) 不能从本地路径加载?

c# - System.Diagnostics.Trace、System.Diagnostics.Debug 和 System.Console 之间有什么区别?

c# - 我如何从WhenAll(任务数组)中获取结果

c# - .NET 任务中的代码最终是否通过 native Windows 线程在 CPU 或 CPU 核心上运行?

c++ - 停止 zmq 消息

Angularjs - 如何获得 ng-message required 错误以同时显示和禁用输入按钮

java - 执行者服务 - 线程超时

php - PHP消息系统中创建一条通往 "tag"人的​​路