- 私は送受信にソケット(ソケットA =新しいソケット...)を使用しています。
- 古いオブジェクトをクローズ/廃棄しようとしていて、新しいソケット(A =新しいソケット...)(同じホスト/ポート)をインスタンス化しようとしています
- connect()リモートホストが接続を認識します。非常に最初のバイトを送信しようとしたら
- 、私はすぐに取得:
System.ObjectDisposedException:破棄されたオブジェクトにアクセスできません。 オブジェクト名: 'System.Net.Sockets.Socket'。 System.Net.Sockets.Socket.Send(Byte [] buffer、Int32 offset、Int32 size、SocketFlags socketFlags、SocketError & errorCode) at System.Net.Sockets.Socket.Send(Byte [] buffer、Int32 offset、 INT32サイズ、socketFlags socketFlags)System.Net.Sockets.Socket.Send(バイト[]バッファに )再オープンされたソケットを介して送信しようとしたときのObjectDisposeException
任意のアイデア?
try
{
CCMSocket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
CCMSocket.Connect(CCMServer, CCMPort);
}
ソケットで作業する場合さて、catch節はSocketException
をキャッチし、再接続メソッドを呼び出します。
try
{
//Verify the the socket is actually disconnected
byte[] Empty = new byte[0];
CCMSocket.Send(Empty);
}
catch (Exception ex)
{
bool connected = false;
int reconnectCounter = 0;
do
{
reconnectCounter++;
Disconnect(); //<-- Just CCMSocket.Disconnect(true) in a try/catch
if (Connect(CCMServer, CCMPort)) // <-- method given above
{
connected = true;
CCMSocket.Send(LoginData); // this fails
}
} while (!connected);
}
あなたのコードを見て、あなたのオブジェクトをどのように処分しているか見ることができます。 –
あなたは同じ参照を使用しているように、いくつかのコード抽出を投稿できますか? – djeeg
'Socket'オブジェクトに対して' using'ブロックをどこにでも使っていますか? – abatishchev