Async-Await表达式返回错误结果

本文关键字:结果 错误 返回 表达式 Async-Await | 更新日期: 2023-09-27 18:17:28

我有一个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方法,但我正在学习。谢谢你的回答

Async-Await表达式返回错误结果

是的,这是CTP(我的博客;Lucian Wischik的博客)。完整版会修复的。