其他分享
首页 > 其他分享> > 异步等待表达式返回错误的结果

异步等待表达式返回错误的结果

作者:互联网

我对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