簡體   English   中英

向線程發送消息的最佳方式

[英]Best Way to send message to thread

將消息發送到在c#/。net中while(1)循環中運行的線程(非進程)的最有效和最快速的方法是什么:

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

  2. 運行消息循環在線程上下文中使用Application.Run系統winforms並在運行application.run之前訂閱捕獲線程上下文中的消息的事件。

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

在Linux中,我習慣使用unix域套接字執行此操作,在Windows中執行此操作的方法是什么? 分享內存文件? 命名管道? 你怎么看?

我個人使用生產者/消費者隊列。 這實際上就是WinForms消息循環,只是以Windows窗體特定的方式。

請注意,如果您能夠使用.NET 4.0,那么框架中內置了一些集合 ,這使得這非常容易。 特別是,使用包圍ConcurrentQueue<T>BlockingCollection<T> ConcurrentQueue<T>將執行您想要的操作。

我個人不會使用GeeksCafe代碼 - 我將生產者/消費者性質封裝到自己的包裝隊列的類中,而不是通過擴展方法以這種方式處理任何隊列。 特別是,您需要所有各方正確處理隊列,這意味着最好在我的視圖中為其提供自己的API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM