C# 无法访问已释放的套接字

C# 无法访问已释放的套接字,c#,wpf,sockets,C#,Wpf,Sockets,我有一个异步套接字应用程序,我正在尝试设置它以更好地处理异常。当捕捉到套接字异常时,我关闭套接字并将它们带回“连接”屏幕,在那里它尝试重新连接套接字。问题是-当尝试重新连接时,我得到一个错误,当前套接字被释放 当我尝试重新连接时,是否有方法检查套接字是否已释放,如果是,是否重新实例化套接字 catch (Exception e) { ShutDownAfterException(); Console.WriteLine(e.T

我有一个异步套接字应用程序,我正在尝试设置它以更好地处理异常。当捕捉到套接字异常时,我关闭套接字并将它们带回“连接”屏幕,在那里它尝试重新连接套接字。问题是-当尝试重新连接时,我得到一个错误,当前套接字被释放

当我尝试重新连接时,是否有方法检查套接字是否已释放,如果是,是否重新实例化套接字

 catch (Exception e)
 {
                ShutDownAfterException();

                Console.WriteLine(e.ToString());
                Console.WriteLine("From ReceiveCallback");
 }

private void ShutDownAfterException()
{
            Client.Shutdown(SocketShutdown.Both);
            Client.Close();
            Client = null;

            Stop();
            Application.Current.Dispatcher.BeginInvoke(
            DispatcherPriority.Background,
            new Action(() => Messenger.Default.Send<NavigateMessage>(new NavigateMessage(ConnectViewModel.ViewName, this))));
}
catch(异常e)
{
ShutDownAfterException();
Console.WriteLine(如ToString());
Console.WriteLine(“来自ReceiveCallback”);
}
私有void ShutDownAfterException()
{
Client.Shutdown(SocketShutdown.Both);
Client.Close();
Client=null;
停止();
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.背景,
新操作(()=>Messenger.Default.Send(新导航消息(ConnectViewModel.ViewName,this)));
}

Socket.Close方法实际上会断开并处理套接字,这意味着下次访问套接字实例时将引发异常


如果要断开套接字连接,请仅使用
socket.disconnect(reuseSocket:true)

由于代码首先处理套接字,因此在重新连接时总是要处理套接字。鉴于此,只需重新安装插座,而不必检查它是否已被处理。谢谢,我想这就是我打算做的