2012-03-16 9 views
1

私が使用している場合:操作は同期的に完了したか、私はasyncRes.CompletedSynchronouslyのためにテストする必要があり、それは私のコールバックが呼び出されなかったことをtrueを返すかどうかを知るときC#asyncソケット - 非同期コールバックは常に呼び出されますか?

connectionSocket.BeginSend(data, 0, length, SocketFlags.None, out error, new AsyncCallback(SendDataDone), state); 

でもケースで呼び出さSendDataDoneコールバックですか?

私はコールバックは常にドキュメントによると...

答えて

1

と呼ばれることを期待する:

あなたのコールバックメソッドは、EndSendメソッドを呼び出す必要があります。あなたの アプリケーションがBeginSendを呼び出すと、システムが指定したコールバックメソッドを実行 に別のスレッドを使用すると、ソケットが要求されたバイト数を送信するか、例外をスロー までEndSendにブロックします。

スレッドを殺すものがない限り、例外の可能性があるとみなされているので、待つ準備が整いました。すべてうまくいくはずです。可能なSocketExceptionまたはObjectDisposedExceptionを処理することのみを意識する必要があります。

+0

はい、理にかなっているそう* EndSend *リクエストのための非同期呼び出しパターンとリソースを完了していないwoulは解放されないだろう。.. – Ghita

関連する問題