- - PR -
BeginReceiveFromの強制終了について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-02 22:41
教えてください。
現在UDPソケット通信の受信プロセスを作っています。 処理内容としては、UDP受信を繰り返し。もしある一定時間経過すると TIMEOUTで終了するという処理です。 ソースは Do While True 'ソケットが来るまで待つ Select Case WaitHandle.WaitAny(done, 1000, False) Case 0 ' 受信イベント done(0).Reset() 'イベント初期化 Dim so2 As New StateObject 'stateオブジェクトに代入 so2.workSocket = s '受信処理 s.BeginReceiveFrom(so2.buffer, 0, 1024, SocketFlags.None, sender, New AsyncCallback(AddressOf rcvUDP), so2) Case 1 'タイムアウト後は受信しない s.Close() Exit Do End Select LOOP で受信すればコールバックにて電文を抽出しています。 またタイマーを生成して、時間が来ればタイムアウトとし done(1).setして処理を終わりたいのですが タイムアウト後にBeginReceiveFromで待っているスレッド が受信を行ってしまいます。この受信を行わないようにするには どのようにすればいいのでしょうか? | ||||
|
投稿日時: 2005-03-03 00:03
試していませんが、EndReceiveFromを呼び出せば止まりません?
| ||||
|
投稿日時: 2005-03-03 09:04
'タイムアウト後は受信しない のすぐ下にて
EndReceiveFromを呼び出すとArgumentNullException(asyncResult が null 参照)が 返ってきてしまい、例外処理となってしまうんです。 | ||||
|
投稿日時: 2005-03-03 09:38
BeginRecieveFrom() の戻り値をうっちゃらかしちゃ駄目でしょ。 EndRecieveFrom() のヘルプの「使用例」に、そのものズバリなサンプルコードが書かれているような。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ |
1