2011-05-02 75 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授权条款。