)이 예제에 대한 질문 : Asynchronous Client Socket. 그것은 작업이 비동기 그들이 이 (제시 beginxxx/endxxx), 그러나 그들은 ManualResetEvent
사용하고 난 제대로 샘플 코드를 이해한다면 말한다 - 같은 통화 :비동기 클라이언트 소켓 예제 (
Receive(client);
receiveDone.WaitOne();
스레드를 차단합니다, 그들은 에서 전화했다. 그래서 만약 내가 UI를 가진 응용 프로그램을 가지고 있고 주 스레드에서 그 비동기 소켓 코드를 호출 - 응용 프로그램이 동결됩니다 ... 아니면 내가 틀렸어? 죄송합니다, 나는 메인 스레드를 동결하지 않고 비동기 적으로 tcp를 통해 몇 가지 명령을 보내거나받을 것으로 예상됩니다. 동결을 피하기 위해 샘플에서 모든 소켓 작업을 호출해야합니까?
이 예제는 콘솔 응용 프로그램 용입니다. 내 생각에 GUI 응용 프로그램에서보기에 Receive 콜백 그리기 업데이트를 가질 수 있고 Send 함수는 버튼 클릭 (또는 다른 이벤트)에서만 호출 될 수 있기 때문에 더 유용 할 것이라고 생각합니다. 이 예제에서 차단할 유일한 이유는 연결, 보내기, 받기, 닫기의 선형 이벤트를 보장하고 콜백이 완료되기 전에 프로그램이 종료되지 않도록하는 것입니다. – styfle