2011-08-10 5 views
3

메인 스레드가 비동기 메서드 호출이 끝날 때까지 기다릴 필요가 없으며 기다리지 말아야하는 상황에서 프로그래밍 방식으로 새 스레드를 만드는 것이 필요합니까?비동기 메서드 호출 중 주 스레드 마무리?

이 경우 데이터베이스에 일부 데이터를 저장할 때 비동기 호출이 이루어 지지만 호출하는 메소드가 마지막으로 수행하는 두 번째 작업 (마지막 작업은 데이터 반환 중임)입니다. 따라서 기다리는 것이 무의미한 것처럼 보입니다 (특히 다른 메서드가 반환 데이터를 기다리고 있기 때문에). 그러나 호출 한 후에 호출 메서드가 끝나면 async 메서드가 제대로 실행되지 않을 수 있습니다.

이런 상황에서 가장 좋은 방법은 무엇입니까? 현재 .NET 3.5에 바인딩되어 있습니다.

답변

1

유일한 문제는 "호출 방법"이 응용 프로그램 시작점 (일명 Main())이고 프로세스 자체가 종료 된 경우입니다. 이 시나리오에서는 과 같이이 완료 될 때까지 기다릴 수 있습니다 (직접 응답 (기다릴 수있는 반환 개체 사용) 또는 간접 (ManualResetEvent 또는 그 비슷한 설정) 콜백을 제공 할 수 있습니다.

정의에 따르면 비동기 메서드 호출은 이며 이미 다른 스레드와 관련된이므로 복제 할 필요가 없습니다 (실제로는 그렇지 않아야 함). 그러나 필요한 "End *"가 인 경우 콜백을 통해 호출해야합니다.

관련 문제