> 백엔드 개발 > C++ > 대기 대 결과: C# 비동기 작업에서 `.Result` 대신 `await`를 사용해야 하는 경우는 언제입니까?

대기 대 결과: C# 비동기 작업에서 `.Result` 대신 `await`를 사용해야 하는 경우는 언제입니까?

DDD
풀어 주다: 2025-01-22 22:51:09
원래의
799명이 탐색했습니다.

Await vs. Result: When Should You Use `await` Instead of `.Result` in C# Async Tasks?

C# 비동기 작업에서 await.Result 선택

Stephen Cleary의 "C# 동시 프로그래밍 핸드북"에서 한 가지 기술이 내 관심을 끌었습니다.

<code class="language-csharp">var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
  return null;
return await downloadTask;</code>
로그인 후 복사

downloadTask이 시간 초과 없이 완료되었으므로 await으로 바로 돌아가는 대신 두 번째 downloadTask.Result를 수행해야 하는 이유는 무엇입니까?

await에 비해 .Result

의 장점

저자는 await(또는 .Result)보다 Wait을 사용하는 두 가지 주요 이유를 강조합니다.

  1. 예외 처리: awaitAggregateException에서 예외를 래핑하지 않으므로 보다 명확한 예외 처리 메커니즘을 제공합니다.
  2. 교착 상태 방지: 비동기식 메서드 내에서 .Result 또는 Wait을 사용하면 교착 상태나 미묘한 런타임 문제가 발생할 수 있습니다.

이용안내

.Result 또는 Wait 사용이 완전히 금지되지는 않지만 다음 지침을 따르는 것이 좋습니다.

  • 비동기 애플리케이션 코드: 항상 await를 사용하세요.
  • 비동기 유틸리티 라이브러리: 적절한 문서와 함께 주의해서 .Result 또는 Wait와 함께 사용할 수 있습니다.
  • 병렬 작업 코드: 비동기 병렬 작업의 경우 .ResultWait가 적합합니다.

이러한 지침을 따르면 개발자는 예외 처리를 개선하고 교착 상태를 방지하며 더욱 강력하고 유지 관리가 쉬운 비동기 코드를 작성할 수 있습니다.

위 내용은 대기 대 결과: C# 비동기 작업에서 `.Result` 대신 `await`를 사용해야 하는 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿