指定与对象并行的linq的任务超时

我有一个我希望并行处理的图片列表,但是超时。 我的旧代码通过分页项目和使用WaitHandles来做到这一点,但我想使用.Net 4中提供的新的Parallel Linq或Tasks库。

以下代码段正在运行,如何为其添加超时? (超时将用于执行的每个任务,而不是所有项目的超时处理)

private PictureList FetchPictures(List wallResults) { wallResults .AsParallel() .WithDegreeOfParallelism(10) .ForAll(delegate(Picture p){ 

您可以使用WithCancellation()

 var cts = new CancellationTokenSource(timeout); wallResults .AsParallel() .WithCancellation(cts.Token) .WithDegreeOfParallelism(10) .ForAll(p => { … 

如果你不能使用.Net 4.5,你将无法使用CancellationTokenSource超时接受构造函数,所以你必须手动使用Timer