C# 비동기 프로그래밍의 Await 및 Result 비교
C# 비동기 프로그래밍에서 await
키워드는 작업이 완료될 때까지 실행을 일시 중지하는 데 사용됩니다. 그런데 일부 개발자들은 작업이 완료되면 왜 await
속성에 직접 접근할 수 없는 걸까?라고 의문을 제기할 것입니다. 이 기사에서는 이 문제를 살펴보고 Task.Result
를 우선적으로 사용해야 하는 이유를 설명합니다. await
<code class="language-C#">var completedTask = await Task.WhenAny(downloadTask, timeoutTask); if (completedTask == timeoutTask) return null; return await downloadTask; </code>여기서
은 HTTP GET 요청을 나타내고 downloadTask
은 타임아웃 모니터 역할을 합니다. HTTP 요청이 주어진 시간 내에 완료되지 않으면 timeoutTask
이 완료됩니다. timeoutTask
가 완료됩니다. 그렇다면 코드 조각에서 두 번째 downloadTask
를 사용하는 이유는 무엇일까요? 그냥 await
을 사용하면 안 되나요? downloadTask.Result
은 await
또는 Result
과 다르게 예외를 처리합니다. Wait
await
에서 예외 래핑을 피하세요. 이는 일반적으로 비동기 코드에서 바람직하지 않습니다. 또한 AggregateException
및 Result
은 특히 비동기 방식에서 교착 상태를 일으킬 수 있습니다. Wait
을 우선적으로 처리하는 것이 좋습니다. 일반적으로 비동기 애플리케이션 코드에서는 await
및 Result
사용을 피해야 합니다. 때때로 비동기 유틸리티 라이브러리나 병렬 작업 코드에서 사용될 수 있습니다. Wait
위 내용은 C#의 Await와 Result: 언제 Task.Result에 액세스하는 대신 Await를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!