c# 에서 Async/Await Deadlocks 이해를 이해합니다
키워드는 간소화 된 접근 방식을 제공합니다. 그러나 부적절한 사용은 교착 상태로 이어질 수 있습니다. 일반적인 시나리오를 살펴 보겠습니다 <:>이 예를 고려하십시오 : 이 코드는 데이터를 비동기 적으로 검색하려고 시도하지만 를 사용하여 결과를 동기 대기하여 교착 상태를 만듭니다. 교착 상태는 다음과 같이 발생합니다 전화
. 를 통해 비동기 웹 요청을 시작합니다async
불완전한 작업을 반환합니다
정지, 불완전한 작업을 로 반환합니다
await
에서 불완전한 작업의 블록, 컨텍스트 스레드를 중단합니다.
는 를 기다립니다.
<code class="language-csharp">public ActionResult ActionAsync() { // DEADLOCK: Blocking on the async task var data = GetDataAsync().Result; return View(data); } private async Task<string> GetDataAsync() { // Simple asynchronous method var result = await MyWebService.GetDataAsync(); return result.ToString(); }</code>
위 내용은 Async/await은 어떻게 C#에서 교착 상태로 이어질 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!