3
잘못된 결과를 반환하는 async-await 식에 문제가 있습니다. 내가 SumAll 방법을 실행하여 속성 A와 B를 요약하고자 할 때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();
}
, 난 당신이 작동하지 않는 코드를 찾을 수 있습니다 아래의 I 6. 받아야 결과 (4)를 얻는다.
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 메서드를 사용하는 것이지만, 나는 듣고있다. 대답 해 주셔서 감사합니다.