질문:
단일 스레드 콘솔 애플리케이션에서 어떻게 스레드가 task.Wait()에 의해 잠겨 있으므로 wait 키워드가 실행된 후에 코드를 작성할 수 있습니까? 새 스레드가 인계 받습니까, 아니면 기본 스레드가 task.Wait()를 떠나 后续代码을 실행합니까?
답변:
실행 메커니즘 :
비동기 방식에서 wait 키워드를 만났을 때 MyAsyncMethod()와 마찬가지로 메서드의 나머지 코드는 연속으로 간주됩니다. Wait 키워드는 보류 중인 작업(예: MyOtherAsyncMethod())이 완료될 때까지 메서드 실행을 효과적으로 일시 중단합니다.
스레드 연속:
기본적으로 비동기 메서드는 Wait 키워드 이전의 코드와 동일한 동기화 컨텍스트에서 실행됩니다. UI 애플리케이션의 경우 이는 Wait 이후의 코드가 기본 UI 스레드에서 실행됨을 의미합니다.
단일 스레드 앱의 시나리오:
In 그러나 단일 스레드 콘솔 애플리케이션에서는 task.Wait()를 호출하면 기본 스레드의 실행이 차단됩니다. 따라서 스레드가 사실상 잠겨 있기 때문에 대기 후의 연속 코드를 실행할 수 없습니다.
해결 방법:
단일 스레드 애플리케이션에서 연속 코드가 실행되도록 하려면, 두 가지 옵션이 있습니다:
위 내용은 단일 스레드 애플리케이션에서 'await' 후에 코드 실행이 어떻게 재개됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!