我从这里阅读了本指南http://blog.stephencleary.com/2012/02/async-and-await.html
在这里,我得到了一些代码,但对我来说不是很清楚。
1)
public async Task DoOperationsInParallelAsync()
{
Task[] tasks = new Task[3];
tasks[0] = DoOperation0();
tasks[1] = DoOperation1();
tasks[2] = DoOperation2();
// At this point, all three tasks are running in parallel.
// Now, we await them all.
await Task.WhenAll(tasks);
}
在上面我们创建了多个任务,但假设当所有任务将并行运行时,DoOperation2() 可能首先完成,DoOperation0() 和最后 DoOperation1() 完成。如果我想在控制台窗口中显示像 DoOperation2() 这样的消息,那么我该怎么做。当多个正在运行时,我怎么能检测到哪个任务完成了。
2)当我们在async/await的帮助下运行任何函数时,它是作为后台线程还是前台线程运行的。
3)
public async Task<int> GetFirstToRespondAsync()
{
// Call two web services; take the first response.
Task<int>[] tasks = new[] { WebService1(), WebService2() };
// Await for the first one to respond.
Task<int> firstTask = await Task.WhenAny(tasks);
// Return the result.
return await firstTask;
}
我不明白为什么这个人写了等待第一个回复。
// 等待第一个响应。任务 firstTask = 等待 Task.WhenAny(tasks);
为什么是第一个......为什么不是第二个,因为这里有两个任务正在运行。
请指导我并消除我的困惑。谢谢