2011-06-02 140 views
7

我正在處理一次只能處理1個命令的硬件資源。我將通過Web界面公開它的一些API函數,所以顯然有一個很好的機會一次發送超過1個命令。我決定在提交這些命令時排隊這些命令是確保串行處理的最佳方法。C#隊列實現#

我正計劃在靜態類中實現隊列。 Web應用代碼隱藏將通過調用與他們想要的命令相對應的方法來添加命令。我希望調用方法等待,直到它獲得其命令的輸出,因此不需要異步魔法。

  1. 我做對了嗎?有沒有更好的辦法?

  2. 如何開始在C#中實現隊列(我通常使用Java)?我想我需要某種形式的事件信號的作業已添加,以及處理程序啓動隊列的處理...

我使用.NET Framework 4的

+0

你可以修改你的問題來澄清你正在使用哪個版本的.NET?這將決定您是否可以使用ConcurrentQueue(4.0+)或Queue(2.0+)。 – 2011-06-02 18:00:24

回答

10

您可以使用ConcurrentQueue類作爲實現,並有一個專用線程來處理隊列中的項目。

對於可以使用一個AutoResetEvent,生產者傳遞事件實例的單例類與請求一起的等待部分,然後調用WaitOne()哪些塊直到處理器已經發出信號處理是通過調用Set()完成。

+0

似乎正是我所期待的。謝謝您的幫助! – uscere90 2011-06-02 18:33:57