异步等待表达式返回错误的结果
作者:互联网
我对async-await表达式有问题,该表达式返回错误的结果.
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方法,但是我正在学习.
谢谢您的回答
解决方法:
是的,这是CTP(my blog; Lucian Wischik’s blog)的已知错误.它将在完整版本中修复.
标签:async-await,net-4-5,c,net 来源: https://codeday.me/bug/20191202/2084968.html