7
據MSDN:Task.WhenAll() - 它創建一個新線程嗎?
創建一個任務,當所有的供應任務已完成,將完成。
當調用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);
}
}
}
鏈接的帖子真的很好。你讓我成爲信徒;) – Kris