2012-01-16 86 views
2

我的问题很简单。沉重的谷歌搜索后,我了解到,我可以用无扩展,并从其安装目录System.Threading.dll版本使用ConcurrentDictionary.NET 3.5项目。首先没有System.Threading.dll,在Reactive Extensions .NET 3.5子目录中只有System.Reactive.Windows.Threading。 添加引用System.Reactive或System.Reactive.Windows.Threading或从提到的.NET 3.5中的任何其他的不给我ConcurrentDictionary类,它也给我System.Collections.Concurrent命名空间。我已经下载了Reactive Extensions SDK的老版本,我发现了我一直在寻找的内容,但是我的问题是:有人知道在Reactive Extensions的实际版本中发生的ConcurrentDictionary backport是怎么回事,有人知道它在哪里或为什么不见了。我无法找到合理的答案或任何答案。什么是ConcurrentDictionary in Reactive Extensions .NET 3.5

+0

这可能是你有帮助:为什么会System.Threading.dll从Windows \大会上失踪了?] [1] [1]:http://stackoverflow.com/questions/ 3405662/why-might-system-threading-dll-missing-from-windows-assembly – 2012-01-16 13:28:56

+0

是的,我看过这篇文章。在我的情况下,一切都很好,我添加了正确的Rx版本的DLL,它是可见的参考列表。然而,即使我在Reactive Extensions上使用反编译器,所有的DLL都没有ConcurrentDictionary的标志,我的意思是在实际版本中,旧版本很好,但我想知道发生了什么,为什么我不得不使用旧版本的Rx? – Tobiasz 2012-01-16 13:36:04

+1

RX扩展团队没有给出并发数据结构被删除的原因。看到这里(如果你还没有):http://social.msdn.microsoft.com/Forums/en-US/rx/thread/527002a3-18af-4eda-8e35-760ca0006b98#11b85c5b-f966-4b2a-9a94 -b5d1c41394b7。我想你需要直接询问球队才能知道。我怀疑它只与在NET 4.0,Silverlight 4和Windows Phone 7上正式支持的RX扩展有关。 – 2012-01-16 14:06:58

回答

8

我们不再使用Rx for .NET 3.5发布TPL的backport。如果您想在并发领域使用TPL和相关的创新技术,请开始使用.NET 4(或更高版本)。 Rx本身并不需要TPL功能,因此我们没有强烈需要携带TPL。

保持这样一个backport存活相关的支持性,维护和质量方面的复杂性太多。例如,旧版CLR版本的TPL的性能特征从未经过多年前的TPL最初的CTP测试。

+0

非常感谢您提供详细且有效的答案。 – Tobiasz 2012-01-18 10:24:27

+0

http://www.nuget.org/packages/TaskParallelLibrary – JasonPlutext 2014-02-28 01:27:11

相关问题