我有一个应用程序,它正在连接到某些网络服务器(tcp),使用网络流进行连接:
if (!SSL)
{
_networkStream = new System.Net.Sockets.TcpClient(Server, Port).GetStream();
_StreamWriter = new System.IO.StreamWriter(_networkStream);
_StreamReader = new System.IO.StreamReader(_networkStream, Encoding.UTF8);
}
if (SSL)
{
System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(Server, Port);
_networkSsl = new System.Net.Security.SslStream(client.GetStream(), false,
new System.Net.Security.RemoteCertificateValidationCallback(Protocol.ValidateServerCertificate), null);
_networkSsl.AuthenticateAsClient(Server);
_StreamWriter = new System.IO.StreamWriter(_networkSsl);
_StreamReader = new System.IO.StreamReader(_networkSsl, Encoding.UTF8);
}
///// since now I working with both reader and writer globally in multiple threads
我正在异步使用读写器(在2个线程中),需要全局可用这两个流(它们在类级别上定义为公共引用),所以我不知道是否可以在此处使用using
语句。
如何正确关闭此连接?所有对象(NetworkStream
,流写入器和读取器)都有Close()方法。我应该为它们中的所有对象调用它吗?或者只需调用其中一个?是否有必要释放某些资源?
.Close()
显式地关闭连接 - 然而,如果在读取过程中强制关闭流,则可能会导致数据被使用。 - Darren