【发布时间】:2016-02-03 11:41:48
【问题描述】:
只想知道使用WhenAll和ContinueWith时任务结果的顺序。 这些结果是否与任务 ID 的顺序相同?
我写了下面的代码
public static async Task<string> PrintNumber(int number)
{
return await Task.Delay(number*1000).ContinueWith(_=>
{
Console.WriteLine(number);return "TaskId:"+Task.CurrentId+" Result:"+number;
});
}
public static void Main()
{
Task.WhenAll(new[]
{
PrintNumber(3),
PrintNumber(2),
PrintNumber(1),
}).ContinueWith((antecedent) =>
{
foreach(var a in antecedent.Result)
{
Console.WriteLine(a);
}
});
}
并在 linqpad 中运行几次得到相同的结果
1
2
3
TaskId:15 Result:3
TaskId:14 Result:2
TaskId:13 Result:1
或
1
2
3
TaskId:18 Result:3
TaskId:17 Result:2
TaskId:16 Result:1
【问题讨论】:
标签: c# asynchronous task-parallel-library