비동기 프로그래밍 작업을 할 때는 코드를 비동기적으로 실행하는 것과 대기 가능한 메서드를 생성하는 것의 차이점을 이해하는 것이 중요합니다.
Task.Run 및 비동기식 실행:
Task.Run은 백그라운드 스레드에서 코드를 실행하여 비동기적으로 보이게 합니다. 그러나 이 접근 방식은 진정한 비동기식 메서드를 생성하지 않습니다. 호출 스레드는 작업이 완료될 때까지 차단된 상태로 유지됩니다.
예:
private async Task DoWork2Async() { Task.Run(() => { int result = 1 + 2; }); }
이 예에서는 호출 스레드가 계속 차단되므로 DoWork2Async는 진정한 비동기가 아닙니다. 작업이 백그라운드 스레드에서 실행되는 동안
네이티브 비동기 메서드:
기본 비동기 메서드는 async 키워드로 선언되며 실행이 시작되기 전에 호출자에게 제어권을 다시 넘겨줄 수 있습니다. 그런 다음 호출자는 비동기 작업이 완료될 때까지 기다리는 동안 다른 코드를 계속 실행할 수 있습니다.
예:
private async Task DoWork1Async() { int result = 1 + 2; }
이 예에서 DoWork1Async는 기본 비동기 메서드입니다. . 이를 기다리면 호출 스레드가 해제되어 비동기 작업이 완료되기를 기다리는 동안 다른 코드를 실행할 수 있습니다.
결론:
대기 가능한 비동기 메서드인 경우 Task.Run에서 동기 코드를 래핑하지 않고 async 키워드를 사용해야 합니다. 이를 통해 비동기 작업이 수행되는 동안 호출 스레드가 차단되지 않는 진정한 비동기 실행이 가능해집니다.
위 내용은 비동기 메서드: Task.Run과 기본 비동기 - 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!