我下面的MSDN上await教程中,我試圖找出使用await
作爲聲明與使用await
作爲表達之間的差異。這整個異步等待的事情正在彎曲我的頭腦,我無法找到這個特定案例的任何例子。等待陳述與表達
基本上,我想看看如何異步使用多個await
,這意味着我不想在第二個開始之前等待第一個完成。這對我來說,擊敗異步的目的與開始:
private async void button1_Click(object sender, EventArgs e)
{
// Using await as an expression
string result_a = await WaitAsynchronouslyAsync();
string result_b = await WaitAsynchronouslyAsync();
// This takes six seconds to appear
textBox1.Text = result_a + Environment.NewLine;
textBox1.Text += result_b;
}
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(3000);
return "Finished";
}
然而,只需要3秒共有兩個「完成」 S出現,這是我想要什麼微妙的變化 - 兩個await
正在競選真正異步:
private async void button1_Click(object sender, EventArgs e)
{
var a = WaitAsynchronouslyAsync();
var b = WaitAsynchronouslyAsync();
// Using await as a statement
await a;
await b;
// This takes three seconds to appear
textBox1.Text = a.Result + Environment.NewLine;
textBox1.Text += b.Result;
}
我的問題是,爲什麼這些不同的表現?我在這裏錯過了什麼微妙的點?
您上次的編輯讓我意識到,謝謝 - 排序是問題所在。我應該意識到他們都是表達。 –