マルチキャストメッセージをリッスンしているudpクライアントがあります。メッセージを取得すると、メッセージが解析され、クライアントはリスニングを再開します。 socket.ReceiveFromメソッドがブロックされている間にアプリケーションがシャットダウンした場合は、このプロセスを中断して続行するにはどうすればよいですか?どのようにsocket.ReceiveFromコールを中断しますか?
私は別のスレッドで実行されているソケットを持っているし、そのスレッドへの割り込みを発行しようとしたが、割り込みが動作しませんsocket.ReceiveFromはメッセージを取得しない限り戻りません。
私もソケットでタイムアウトを設定しようとしましたが、これはタイムアウト時に例外を生成するので理想的ではありません。私は常にリッスンしていますので、タイムアウトを生成し、聞くことに。
私はここで何を試すことができますか?
ソケットをプライベートメンバーとして持つクラスとしてスレッドを実装します。 Socket.Closeを行う公開の 'Shutdown'メソッドを追加してください。あきらめたいと思ったら、外から電話してください。カプセル化と呼ばれています。 –
それは私がやったことです。それはちょうどそのような別のスレッドからソケット上のクローズを呼び出すためにきれいに見えません。しかし、それは動作します。 – Kelly