我遇到了一个问题,使用async-await表达式返回了错误的结果。
现在,当我想通过调用SumAll方法来求属性A和B的总和时,结果为4,而实际上应该是6。下面是不起作用的代码。
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);
}
顺便说一下,我知道最好的方法是使用WhenAll方法,但我正在学习中。 感谢您的回答