У меня проблема с выражением 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 я получаю результат 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, но я ухожу. Спасибо за ответы