gpt4 book ai didi

c# - 向线程发送消息的最佳方式

转载 作者:可可西里 更新时间:2023-11-01 03:09:59 24 4
gpt4 key购买 nike

将消息发送到在 c#/.net 中 while(1) 循环中运行的线程(而不是进程)的最有效和最快的方法是什么:

  1. 使用同步队列(如 Blocking Queues & Thread’s Communication in C# )

  2. 运行消息循环 在线程上下文中使用系统 winforms 的 Application.Run 并在运行 application.run 之前订阅一个事件,该事件在线程上下文中捕获消息。

  3. 使用套接字或命名管道向线程发送消息。

在 Linux 中,我习惯于使用 unix 域套接字执行此操作,在 Windows 中执行此操作的等效方法是什么?共享内存文件?命名管道?你怎么看?

最佳答案

我个人会使用生产者/消费者队列。这实际上就是 WinForms 消息循环,只是采用特定于 Windows 窗体的方式。

请注意,如果您能够使用 .NET 4.0,则有 collections内置于框架中,这使得这非常容易。特别是,使用 BlockingCollection<T> 包裹着一个 ConcurrentQueue<T> 会做你想做的事。

我个人不会使用 GeeksCafe 代码 - 我会将生产者/消费者性质封装到它自己的类中,该类包装一个队列,而不是处理任何队列以这种方式通过扩展方法。特别是,您需要各方正确处理队列,这意味着在我看来最好为其提供自己的 API。

关于c# - 向线程发送消息的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935726/

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