我有一个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()
有没有更好的方法来解决这个问题?