9
我试图总结我的周围async
/await
头,想知道这是否是正确使用方法Task.WhenAll
的:正确使用Task.WhenAll
public class AsyncLib
{
public async Task<IEnumerable<string>> DoIt()
{
var urls = new string[] { "http://www.msn.com", "http://www.google.com" };
var tasks = urls.Select(x => this.GetUrlContents(x));
var results = await Task.WhenAll(tasks);
return results.Select(x => x);
}
public async Task<string> GetUrlContents(string url)
{
using (var client = new WebClient())
{
return await client.DownloadStringTaskAsync(url);
}
}
}
主要
这是调用控制台应用程序。
class Program
{
static void Main(string[] args)
{
var lib = new AsyncLib();
foreach(var item in lib.DoIt().Result)
{
Console.WriteLine(item.Length);
}
Console.Read();
}
}
定义“正确”..? –
@SimonWhitehead - 我是新来的异步/等待,所以只是试图包裹我的头。适当的我猜会意味着“有更好的方法吗?” – Sam
这通常是我/做过的。你需要等待一组异步完成的任务。'WhenAll'通常是你如何做的(我知道的)。 –