2011-05-02 73 views
9

我正在開發一個應用程序框架,供客戶端的Silverlight和服務器端的.NET 4使用。在內部,框架具有多個線程將同時訪問集合的字典和隊列數據結構。Silverlight 4中有哪些線程安全的集合類?

在服務器端,我想利用System.Collections.Concurrent命名空間中可用的ConcurrentDictionaryConcurrentQueue類。這些類但不是在Silverlight 4

實現我正在考慮這兩種方法:

  1. 反編譯ConcurrentDictionary 和ConcurrentQueue類和 實現它們在Silverlight 類庫。這些將使用System.Collections.Concurrent名稱空間來確定作用域。
  2. 實現我需要在共享 庫自定義線程安全 集合類(或找到一個可靠的 Silverlight的線程安全集合 實現),可用於服務器和客戶端。

第一種方法可以讓我只實現我需要的Silverlight的數據結構,但我擔心我的Silverlight實現和.NET 4

第二個實施併發集合類之間引入差異方法將提供客戶端和服務器端一致的併發收集實現,但感覺就像我將重新發明輪子。

似乎並沒有在Silverlight中實現ConcurrentDictionaryConcurrentQueue類會非常困難,但是Silverlight中是否已經有一個很好採用的線程安全集合類庫?

+0

編輯標籤,因爲這仍然適用於SL5。 – 2012-02-20 09:38:24

回答

6

嘗試了這一點:http://ch.codeplex.com/

+0

該項目看起來不錯,但它似乎沒有'ConcurrentQueue'實現。看起來像一些不錯的代碼 - 但我一定會讀到源代碼。 – 2012-02-20 09:37:53

+0

這是過時的項目,它不包含ConcurrentQueue。它看起來像是因爲MS發佈System.Collections.Concurrent而被放棄.net4 所以問題仍然存在。 SL5的ConcurrentQueue有沒有很好的實現?對立,你是否成功地進行了反編譯? – 2012-03-03 06:08:38

+0

主動可能的反編譯比我原先認爲的更難(在Silverlight中沒有使用BCL類)。從頭開始編寫集合類可能更容易,但我沒有時間去嘗試。 – Oppositional 2012-06-02 04:43:04

2

爲單聲道的類庫包含各種併發集合的實現,並根據極度放縱MIT授權條款。