2010-03-31 4 views
3

내가 다음 (조각)을 수행 MSDN에서 비동기 FTP 업로드에 대한 example을 발견 (예 참조) 할 않습니다비동기 IO는 스레드가 어쨌든 차단되면

 // Asynchronously get the stream for the file contents. 
     request.BeginGetRequestStream(
      new AsyncCallback (EndGetStreamCallback), 
      state 
     ); 

     // Block the current thread until all operations are complete. 
     waitObject.WaitOne(); 

내가하지 무슨 것은 여기 이해할 수 있습니다. 비동기 IO는 스레드가 명시 적으로 워 미들 렐 (awithandle)을 사용하여 차단 된 경우 어떤 의미입니까? 나는 항상 비동기 입출력의 장점은 사용자/프로그래머가 이 아니고,이 기다려야한다는 것이라고 생각했다.

답변

4

예일뿐입니다.

실제 응용 프로그램 (TM)에서 코드가 GUI 스레드를 실행할 수 있습니다. 그리고 우리 모두는 GUI 경험이있을 때 GUI 스레드를 차단하는 것이 가장 중요하다는 것을 알고 있습니다.

비동기 작업이 끝나면 GUI에서 알리미를 호출하여 사용자가 전송을 기다리는 동안 다른 작업을 수행 할 수 있습니다.

1

어떻게 수행했는지 보여주는 데 필요한 최소 코드를 사용하여 예제로 만 수행 할 수 있습니다.

위의 코드에서 알 수있는 것은 메인 스레드가 작업을 기다리는 동안 CPU를 사용하지 않는다는 것입니다. GUI를 사용하는 경우 논리적 일 수 있습니다.

1

예,별로 의미가 없습니다. 이 예제는 비동기 적으로 호출하는 구문을 보여주기위한 것이지만 실제로는 블록하려는 경우 비동기 호출의 지점을 먼저 무시한다고 가정합니다.

관련 문제