[c#] Task.Result는 .GetAwaiter.GetResult ()와 동일합니까?



Answers

https://github.com/aspnet/Security/issues/59

"마지막으로 한 가지 주목해야 할 점은 AggregateException 에 항상 내부 예외를 캡슐화하고 메시지를 일반적인 오류로 캡슐화 (하나 이상의 오류가 발생 함)하여 디버깅을 어렵게 만드는 Task.ResultTask.Wait 을 가능한 많이 사용하지 말아야한다는 것입니다 동기 버전을 자주 사용하지 않아도되지만 Task.GetAwaiter().GetResult() 대신 사용하는 것이 좋습니다. "

Question

나는 최근에 많은 비동기 메소드를 사용하는 코드를 읽고 있었지만 때로는 동 기적으로 실행해야했습니다. 코드는 다음을 수행합니다.

Foo foo = GetFooAsync(...).GetAwaiter().GetResult();

이것과 같은가요?

Foo foo = GetFooAsync(...).Result;

?




또 다른 차이점은 async 함수가 Task<T> 대신 Task 를 반환하면 사용할 수 없다는 것입니다.

GetFooAsync(...).Result;

이므로

GetFooAsync(...).GetAwaiter().GetResult();

여전히 작동합니다.

문제의 예제 코드는 Task<T> 의 경우에 해당하지만 질문은 일반적으로 묻습니다.




Links