Silverlight的任务并行库

Silverlight的异步服务模型迫使开发者从一开始就处理多线程。因此微软选择去掉任务并行库就显得有点奇怪了,毕竟它是.NET多线程基础设施的核心。幸运的是,我们还有其他选择。

如果LGPL 2.0许可证不会为你带来麻烦,你可以使用Mono实现的移植。Robert McLaws和Jrmie“Garuma”Laval已经完成了移植,并把他们的成果发布到NuGet,标题是Task Parallel Library for Silverlight - 2.0。不幸的是,他们还没发布LGPL许可证的副本、源代码或者Mono版权信息的通告。虽然这是可以修正的,但它可能在此时造成一些法律问题。

假设他们将会修正这个疏忽(译注:目前已经修正),你就可以从他们的包里得到下面这些特性:

  • 适用于Silverlight 3和4的实现
  • 适用于Silverlight for Windows Phone 7和7.1的实现
  • 任务并行库本身(System.Threading.Tasks)
  • 并行数据结构(System.Collections.Concurrent)
  • 取消基础设施(如CancellationToken)
  • 并行for循环,但不支持并行LINQ表达式

另一个选择是David Catuhe的PortableTPL。这不是真正的TPL,不过非常简单,原本是为教学而设计的。当然,它确实能够在Silverlight、Windows Phone 7和XBox 360上运行,并且非常大方地采用了Microsoft Public License许可证。它拥有核心TPL特性,比如Task和取消,但缺少并行数据结构。

查看英文原文:Task Parallel Library for Silverlight

你可能感兴趣的:(Silverlight的任务并行库)