ネットワーク サーバー (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() メソッドがあります。それらすべてに対してそれを呼び出す必要がありますか?それともそのうちの1つだけですか?いくつかのリソースを解放する必要はありますか?