dac*_*ace 1 c# asynchronous windows-8.1-universal
我有一个看起来像这样的代码:
firstList = await GetFirstListFilesAsync();
textBlock1.Text = "found " + firstList.Count + " first list's results";
secondList = await GetSecondListFilesAsync();
textBlock2.Text = "found " + secondList.Count + " second list's results";
thirdList = await GetThirdListFilesAsync();
textBlock3.Text = "found " + thirdList.Count + " third list's results"
Run Code Online (Sandbox Code Playgroud)
所以现在它获得第一个列表,设置第一个TextBlock文本,然后获取第二个列表,设置第二个TextBlock文本,然后获取第三个列表并设置第三个TextBlock文本.但我希望所有等待操作同时运行,所以所有TextBlocks都会同时更新或更少.或者可能不是在同一时间 - 每个TextBlock都会在相应的await方法完成时更新.无论如何,我想在这里实现的目标是更快地获得结果.如果我一个接一个地运行这些方法,它们会等到上一个完成,但是如果它们同时运行,第三个方法会更快地返回结果,对吧?所以我的问题是 - 这可能吗?如果是,那怎么样?
我认为这就是你要找的东西:
var tasks = new Task<MyMethodReturnObject>[3];
tasks[0] = GetFirstListFilesAsync();
tasks[1] = GetSecondListFilesAsync();
tasks[2] = GetThirdListFilesAsync();
// At this point, all three tasks are running at the same time.
// Now, we await them all.
await Task.WhenAll(tasks);
// Get an individual result, where result is MyMethodReturnObject
var myText = tasks[0].Result;
// Loop through results
var results = tasks.Select(o => o.Result).ToList();
foreach (var result in results)
{
Console.Write(result);
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://blog.stephencleary.com/2012/02/async-and-await.html