给出代码段
var Task1 = DoAsync(0);
var Task2 = DoAsync(1);
await Task.WhenAll(Task1,Task2);
和
Task[] TaskArray = new Task[2];
TaskArray[0] = DoAsync(0);
TaskArray[1] = DoAsync(1);
await Task.WhenAll(TaskArray);
我可以知道,从我提供的代码中执行任务的方式有何不同?
TaskArray确实会同时运行吗?
答案 0 :(得分:4)
我可以知道,从我提供的代码中执行任务的方式有何不同?
您的两个代码段完全相同。可以调用params
方法 - 如果你传递参数,就像在第一个例子中一样,它只是创建一个数组,就像你在第二个例子中所做的那样。
TaskArray确实会同时运行吗?
不一定。异步代码不一定是 parallel 或并发。我们所知道的是,我们有两个操作可以在以后生成结果。通过在两个不同的处理器上同时运行,或在不同线程上的一个处理器上运行,没有任何要求它们这样做。