【发布时间】:2014-01-04 12:07:05
【问题描述】:
根据MSDN:
创建一个将在所有提供的任务完成后完成的任务。
当 Task.WhenAll() 被调用时,它会创建一个任务,但这是否一定意味着它会创建一个新线程来执行该任务?比如下面这个控制台应用程序创建了多少线程?
class Program
{
static void Main(string[] args)
{
RunAsync();
Console.ReadKey();
}
public static async Task RunAsync()
{
Stopwatch sw = new Stopwatch();
sw.Start();
Task<string> google = GetString("http://www.google.com");
Task<string> microsoft = GetString("http://www.microsoft.com");
Task<string> lifehacker = GetString("http://www.lifehacker.com");
Task<string> engadget = GetString("http://www.engadget.com");
await Task.WhenAll(google, microsoft, lifehacker, engadget);
sw.Stop();
Console.WriteLine("Time elapsed: " + sw.Elapsed.TotalSeconds);
}
public static async Task<string> GetString(string url)
{
using (var client = new HttpClient())
{
return await client.GetStringAsync(url);
}
}
}
【问题讨论】:
标签: c# .net asynchronous async-await task-parallel-library