如何从正在运行的任务集合中停止一个正在运行的任务?

时间:2018-01-19 03:20:10

标签: c# list wcf task cancellationtokensource

我有一个DTO对象调用ConvertionDto,它有一些字符串和布尔字段。

我创建了一个任务列表,如下所示

List<Task<Task<ConvertionDto>>> downloadTasksQuery = new 
                                              List<Task<Task<ConvertionDto>>>();

然后开始执行任务并传递取消令牌

downloadTasksQuery.Add(Task.Factory.StartNew(() => 
                                    wcfClient.GetTimeEstimation(deleayTime), 
                                                                cancellationToken));
downloadTasksQuery.Add(Task.Factory.StartNew(() =>                                                
                                    wcfClient.DoConvertion("Hello"), 
                                                           cancellationToken)); 

然后我正在运行while循环并删除已完成的任务。

while (downloadTasksQuery.Count > 0)
{
  // Identify the first task that completes.  
  Task<Task<ConvertionDto>> firstFinishedTask = await Task.WhenAny(downloadTasks);                

  //process it more than once.  
  downloadTasks.Remove(firstFinishedTask);  
}

当某些条件匹配时,我想终止或取消正在运行的当前任务中的某些任务。我试图通过取消令牌,但没有任何帮助我。

cancellationTokenSource.cancel()

有没有更好的方法来解决这个问题?

0 个答案:

没有答案