我正在学习C#的await async特性。但是下面代码的行为让我感到困惑。
完成download1和download2后,我希望CreateMultipleAsync()的最后一行将被执行,并打印长度总和。问题在于最后一行从未执行!
public static async Task CreateMultipleTasksAsync() {
HttpClient client = new HttpClient() {
MaxResponseContentBufferSize = 1000000
};
Task <int> download1 = ProcessUrlAsync("https://msdn.microsoft.com", client);
Task <int> download2 = ProcessUrlAsync("https://msdn.microsoft.com/library/67w7t67f.aspx", client);
int length1 = await download1;
int length2 = await download2;
Console.WriteLine("Sum is {0}", length1 + length2);
}
public static async Task <int> ProcessUrlAsync(string url, HttpClient client) {
Console.WriteLine("I am here to process {0}", url);
var byteArray = await client.GetByteArrayAsync(url);
Console.WriteLine("processing is completed {0}", url);
return byteArray.Length;
}
完成download1和download2后,我希望CreateMultipleAsync()的最后一行将被执行,并打印长度总和。问题在于最后一行从未执行!