2010-04-07 38 views
0

我想寫一個需要任務隊列的應用程序。我應該可以將任務添加到此隊列中,並且這些任務可以異步完成(並且在完成後應該可以從此隊列中移除)C#中的簡單異步隊列數據結構/ mono

數據結構還應該可以獲取有關任何任務隊列,提供了一個唯一的隊列位置標識符。

數據結構還應隨時提供隊列中的項目列表。

管理此隊列的LINQ接口也是可取的。由於這是許多應用程序的一個非常普遍的要求(至少在我個人的觀察中),我想知道是否有任何標準數據結構可用作爲c#庫的一部分,而不是我從頭開始寫東西。

任何指針?

+0

爲什麼一旦完成後,將完整的項目移動到* second *桶(可能只是一個同步列表)?這將使待定的桶保持漂亮和小巧。此外,你所描述的不是嚴格的排隊...... – 2010-04-07 11:37:53

+0

是的。這不是一個隊列。但我不知道該把這個數據結構稱爲什麼。我想要一個TaskManager數據結構。 是否有任何內置的C#庫可以幫助實現這一目標? – 2010-04-07 17:10:42

回答

0

對我來說,你似乎在混淆數據結構和它旨在跟蹤的異步任務。你確定他們需要是同一件事嗎?

ThreadPool.QueueUserWorkItem不滿足運行異步任務嗎?您可以維護自己的結構,從List<TaskStatus>HashSet<TaskStatus>派生,以跟蹤結果,並且您可以提供便捷的方法來清除已完成的項目,檢索待處理的項目等等。

+0

ThreadPool對我來說是足夠隊列項目。正如你在評論的第二部分中正確地提到的那樣,我可以用這些便利的方法編寫我自己的課程。但想知道如果C#庫已經有一些類提供此功能.. – 2010-04-08 16:48:19