[.net] ASP.NET Core와 관련된 ConfigureAwait (false)?

GitHub에서 문제 ( https://github.com/HTBox/allReady/issues/1313 )를 발견했습니다 . 그들은 ASP.NET CoreConfigureAwait(false) 에서 코드를 꺼내는 것에 대해 논의했습니다.

에 대한 호출 ConfigureAwait(false)이 중복되고 아무 작업도 수행하지 않습니다.

여기에서 찾을 수있는 가장 좋은 것은 답변 (Stephen Cleary, https://stackoverflow.com/a/40220190/2805831 )에 있는 “사이드 노트” 입니다.

ASP.NET Core에는 더 이상 “컨텍스트”가 없습니다.

그렇다면 ASP.NET CoreConfigureAwait(false) 에서 정말 불필요 합니까 (전체 .Net Framework를 사용하더라도)? 어떤 경우에는 성능이 실질적으로 향상되거나 결과 / 의미에 차이가 있습니까?

편집 : 콘솔 응용 프로그램이나 IIS에서 호스팅하는 경우이 측면에서 다른가요?



답변

ConfigureAwaitSynchronizationContextASP.NET Core에없는 (ASP.NET “Legacy”가 수행하는) 컨텍스트에서 실행되는 코드에만 영향을줍니다 .

범용 코드는 SynchronizationContext.

ASP.NET Core SynchronizationContext


답변

이건 어때?

현재 (2020 년 2 월) MS 블로그의 개발자는 성능 향상, 교착 상태 방지를 위해 ConfigureAwait (false)를 사용할 것을 권장합니다.
https://devblogs.microsoft.com/dotnet/configureawait-faq/

.NET Core에서 ConfigureAwait (false)가 더 이상 필요하지 않다고 들었습니다. 진실? 그릇된. .NET Framework에서 실행할 때와 똑같은 이유로 .NET Core에서 실행할 때 필요합니다. 그 점에서 변경된 것은 없습니다.


답변