2011-01-05 6 views
1

ソケットをすぐに接続しようとするのを止める方法はありますか?ソケットが接続を試みると、接続のタイムアウトに一定の時間がかかるようです。ユーザーが接続しようとしているボタンをクリックして閉じようとすると、他のスレッドはsocket.Connect()メソッドでブロックされているため、アプリケーションを有効にしています。すぐに接続を停止しますか?

別のスレッドからクローズを呼び出そうとしました。例外は変更されますが、タイムアウトはまだ存在します。タイムアウトを待たなければならないのは面倒です。

答えて

2

非同期メソッドBeginConnectEndConnectと組み合わせて使用​​すると、メインスレッドをブロックしないようにすることができます。タイムアウトが問題になる限り、その価値を減らそうとするかもしれません。

+0

@ Darin。私はこれを見ているが、接続の試みを止める方法がわからない。接続の停止と接続の競合状態はありませんか? – uriDium

+0

@uriDium、あなた*接続を停止することはできません。これは、待機が別のスレッドで実行されるということだけです。 'EndConnect'メソッドを呼び出すときにタイムアウト例外が発生するので、正しく処理することを覚えておいてください。 –

+0

@ダーリン。 EndConnectがブロックされているのがわかります。だから私はまだ待たなければならない?この待っていることから逃げる方法はありませんか? – uriDium

0

なぜ非同期ソケットを使用しないのですか?あなたがそれをもう必要としないならば、あなたはそれを閉じ、あなたのコールバックに後で戻ってくるものはすべて無視します。私はあなたが呼び出す必要があるBeginConnectであることを期待しています。

関連する問題