我對此示例有個疑問:Asynchronous Client Socket。 它說,該操作是異步的,他們ARE(的BeginXXX/endxxx都),但他們使用ManualResetEvent
如果我理解正確的示例代碼 - 這樣的電話:來自MSDN的異步客戶端套接字示例
Receive(client);
receiveDone.WaitOne();
會阻塞線程,他們被叫來。所以,如果我有一個用戶界面的應用程序,我從主線程調用異步套接字代碼 - 應用程序將凍結...或者我錯了嗎?對不起,我希望通過TCP異步發送/接收一些命令而不凍結主線程。我是否需要調用該示例中的所有套接字操作以避免凍結?
這個例子是爲控制檯應用程序。我認爲它在GUI應用程序中更有意義,因爲您可以讓Receive回調將更新繪製到視圖上,並且僅在單擊按鈕(或其他事件)時調用Send函數。在這個例子中阻止的唯一原因是確保連接,發送,接收,關閉的線性事件,並且還可以防止程序在回調完成之前退出。 – styfle 2012-09-16 07:25:50