질문:
.NET 4.5에서 HttpClient.GetAsync(...)와 함께 비동기/대기 언어 기능을 사용하면 특정 상황에서 교착 상태가 발생할 수 있습니다. 특히 HttpClient.GetAsync(...) 결과를 기다리면 다음 상황에서 교착 상태가 발생할 수 있습니다.
설명:
교착 상태는 ASP.NET에서 한 번에 하나의 요청만 처리할 수 있도록 보장하는SynchronizationContext를 사용하기 때문에 발생합니다. Wait를 사용하면 메서드가 캡처된 동기화 컨텍스트(이 경우 ASP.NET 요청 컨텍스트)에서 다시 시작됩니다. 그러나 작업이 완료되기를 기다리는 스레드가 차단되면 ASP.NET 요청 컨텍스트에서 메서드를 다시 시작할 수 없어 교착 상태가 발생합니다.
해결책:
이러한 교착 상태를 방지하려면 다음 모범 사례를 따르십시오.
이러한 지침을 따르면 AsyncAwait_GetSomeDataAsync 메서드가 백그라운드 스레드에서 계속 실행되도록 하고 ASP.NET 요청 스레드 차단을 방지하여 교착 상태를 방지할 수 있습니다.
추가 정보:
위 내용은 .NET 4.5에서 Await/Async를 사용할 때 HttpClient.GetAsync(...) 교착 상태가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!