C#의 Async/Await 사용법: 기다릴 것인가, 기다리지 않을 것인가? 실행에 미치는 영향
다음 코드에는 Callee
메서드에 대한 6개의 호출이 포함되어 있으며 각각 다른 방식으로 실행됩니다.
비동기 호출(Fire-and-forget): Callee
메서드가 비동기적으로 호출되며 기다리지 않습니다. 메서드는 백그라운드에서 비동기적으로 실행되며 호출 메서드는 즉시 실행을 계속합니다.
비동기 호출 대기: Callee
메서드가 호출되고 await
을 사용하여 완료될 때까지 기다립니다. 호출 메서드는 후속 코드 실행을 계속하기 전에 Callee
메서드가 완료될 때까지 기다립니다. Callee
메서드 이후의 코드를 실행하기 전에 메서드가 완료되었는지 확인하세요.
Task.Run을 사용한 비동기 호출: Callee
메서드는 Task.Run
을 사용하여 시작되지만 결과를 기다리지 않습니다. 사례 1과 마찬가지로 Callee
메서드는 백그라운드에서 실행되고 호출된 메서드는 즉시 실행을 계속합니다.
Task.Run을 사용하고 비동기 호출을 기다립니다. Callee
메서드는 Task.Run
을 사용하여 시작되고 결과를 기다립니다. 이는 호출 메서드가 계속하기 전에 Callee
메서드가 완료될 때까지 기다리는 경우 2와 동일합니다.
Task.Run 및 async를 사용한 비동기 호출: Callee
메서드가 async
으로 선언된다는 점을 제외하면 사례 3과 동일합니다. async
키워드를 사용하면 Task.Run
로 래핑된 경우에도 메서드를 비동기적으로 호출할 수 있습니다.
Task.Run 및 async를 사용하고 비동기 호출을 기다립니다. Callee
메서드가 async
으로 선언된다는 점을 제외하면 사례 4와 동일합니다. 마찬가지로 async
키워드는 Task.Run
로 래핑된 경우에도 Wait 메서드를 허용합니다.
요약: 이러한 호출의 기본 논리는 다음과 같습니다.
사례 1 및 3: Callee
메서드는 백그라운드 스레드에서 실행되며 호출 메서드는 즉시 실행을 계속합니다.
사례 2 및 4: 호출 메서드는 후속 코드를 실행하기 전에 Callee
메서드가 완료될 때까지 기다립니다.
사례 5 및 6: 추가 병렬 처리를 위해 Task.Run
을 사용하는 비동기 호출입니다. 그러나 async
키워드를 사용하면 필요에 따라 기다릴 수 있습니다.
위 내용은 C#의 Async/Await: 기다리거나 기다리지 않을 것인가? 실행에 미치는 영향의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!