Task.Run을 사용하여 비동기 메서드를 동기식으로 호출
비동기 프로그래밍을 사용하면 메인 스레드를 차단하지 않고 장기 실행 작업을 수행할 수 있습니다. 그러나 어떤 경우에는 비동기 메서드를 동기적으로 호출해야 할 수도 있습니다. Task.Run을 사용하여 이를 달성하는 방법은 다음과 같습니다.
장면:
다음 비동기식 방법을 고려해보세요.
<code class="language-c#">public async Task<string> GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; }</code>
다른 동기 메서드에서 이 메서드를 동기적으로 호출해야 한다고 가정해 보겠습니다.
해결책:
비동기 메서드를 동기식으로 실행하려면 Task.Run 메서드를 사용하여 스레드 풀 스레드에서 실행할 수 있습니다.
<code class="language-c#">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
이 코드는 다음 단계를 사용합니다.
.Result를 직접 사용할 때의 단점:
작업의 결과 속성(예: string code = GenerateCodeAsync().Result;
)에 직접 액세스하는 간단한 방법은 다음과 같은 단점이 있으므로 피해야 합니다.
.GetAwaiter().GetResult()
을 사용하면 이 문제를 방지하고 예외를 직접 수신할 수 있습니다. 위 내용은 Task.Run을 사용하여 비동기 메서드를 어떻게 동기적으로 호출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!