编程语言
首页 > 编程语言> > c# – 指定与对象并行linq的任务超时

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

作者:互联网

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

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

   private PictureList FetchPictures(List<Picture> 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.

标签:c,linq,linq-to-objects,task-parallel-library
来源: https://codeday.me/bug/20190703/1368541.html