将消息发送到在 c#/.net 中的 while(1) 循环中运行的线程(不是进程)的最有效和最快的方法是什么:
运行消息循环 在线程上下文中使用系统 winform 的 Application.Run 并在运行 application.run 之前订阅在线程上下文中捕获消息的事件。
使用套接字或命名管道向线程发送消息。
在 Linux 中,我习惯于使用 unix 域套接字来执行此操作,在 Windows 中执行此操作的等效方法是什么?共享内存文件?命名管道?你怎么看?
将消息发送到在 c#/.net 中的 while(1) 循环中运行的线程(不是进程)的最有效和最快的方法是什么:
运行消息循环 在线程上下文中使用系统 winform 的 Application.Run 并在运行 application.run 之前订阅在线程上下文中捕获消息的事件。
使用套接字或命名管道向线程发送消息。
在 Linux 中,我习惯于使用 unix 域套接字来执行此操作,在 Windows 中执行此操作的等效方法是什么?共享内存文件?命名管道?你怎么看?
我个人会使用生产者/消费者队列。这实际上就是 WinForms 消息循环,只是以特定于 Windows 窗体的方式。
请注意,如果您能够使用 .NET 4.0,那么框架中内置了一些集合,这使得这非常容易。特别是,使用BlockingCollection<T>
包裹的 aConcurrentQueue<T>
会做你想要的。
我不会亲自使用 GeeksCafe 代码——我会将生产者/消费者的性质封装到它自己的包装队列的类中,而不是通过扩展方法以这种方式处理任何队列。特别是,您需要各方正确处理队列,这意味着在我看来最好给它自己的 API。