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

Eya*_*alk 16 .net c# multithreading message

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

  1. 使用同步队列(例如在C#阻止队列和线程的通信)

  2. 运行一个消息循环使用的线程上下文系统的WinForms的Application.Run和运行前的application.run订阅的捕捉线程上下文的消息话题的事件.

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

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

Jon*_*eet 15

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

请注意,如果您能够使用.NET 4.0,那么框架中内置了一些集合,这使得这非常容易.特别是,使用BlockingCollection<T>包裹圆形a ConcurrentQueue<T>将做你想要的.

我不会亲自使用GeeksCafe代码-我封装生产者/消费者自然到自己的类包装队列中,而不是把任何通过扩展方法那样的队列中.特别是,您需要所有各方正确处理队列,这意味着最好在我的视图中为其提供自己的API.