DOBON.NET DOBON.NETプログラミング掲示板過去ログ

tcpClientクラスについて

分類:[.NET]

開発環境
Windows2000 SP4 + VB.NET2002

System.Net.Sockets.TcpClientを使って、別PC(Listener側)からメッセージを
受信するアプリケーションを作成しています。

当サイトの「.NET Tips」やヘルプのサンプル等をお手本に作成して、
Connect、Receiveはできるのですが、エラー処理時の再接続処理で
次のようなエラーが出ます。
「・・・TcpClientという名前の破棄されたオブジェクトにアクセスできません。」

発生状況は、次の通りです。
Listener側でアプリケーションを起動して待受け状態持続させる。

Client側でアプリケーションを起動する。
接続する。
接続した由のメッセージを受信する。

Listener側のアプリケーションを終了させる。
Client側でエラーイベントが発生する。
イベント内でCloseをして、再接続処理にはいる。

としているのですが。再接続処理のConnectする個所で
「・・・TcpClientという名前の破棄されたオブジェクトにアクセスできません。」
とエラーが出ます。

TcpClientはプライベートで宣言しているのですが、1つのTcpClientを
使いまわすようなコードがいけないのでしょうか?

何かご存知の方、教えていただけませんでしょうか。
よろしくお願いします。
> イベント内でCloseをして、再接続処理にはいる。
>
> としているのですが。再接続処理のConnectする個所で
> 「・・・TcpClientという名前の破棄されたオブジェクトにアクセスできません。」
> とエラーが出ます。

TcpClientを使ったことはないのですが、
Closeメソッドで破棄した後、再度利用することはできなくて、
インスタンスを再作成しないといけないのでは?

例えば、Form/Stream/StreamReaderなどはそういう作りになってます。
要はNewがOpenに当たる処理を兼ねているのだと思います。
よねKENさん
レスをいただきありがとうございます。

よねKENさんのおっしゃった通りに再接続処理前に、
TcpClient宣言していたプライベート変数をNothingにして
再度、インスタンス作成すると、接続しました。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板