3
我有一個異步等待表達式返回錯誤結果的問題。異步等待表達式返回錯誤結果
private Task<int> A
{
get
{
return TaskEx.RunEx<int>(async() =>
{
Thread.Sleep(10000);
return 2;
});
}
}
private Task<int> B
{
get
{
return TaskEx.RunEx<int>(async() =>
{
Thread.Sleep(4000);
return 4;
});
}
}
private string SumAll(int a, int b)
{
return (a + b).ToString();
}
現在,當我想通過推出SumAll方法總結性質A和B我得到的結果是4,我應該得到6.下面你可以找到它不起作用代碼。
private async void Sum_Click(object sender, RoutedEventArgs e)
{
this.Result.Text = this.SumAll(await A, await B);
}
當我用下面的方法做同樣的例子時,我得到了正確的結果。
private async void Sum_Click(object sender, RoutedEventArgs e)
{
var a = await A;
var b = await B;
this.Result.Text = this.SumAll(a, b);
}
BTW。我知道最好的方法是使用WhenAll方法,但我正在學習。 謝謝您的回答