如何正确地为具有TcpClient和SslStream对象的类编写Dispose和Disconnect函数

本文关键字:函数 Disconnect Dispose 对象 SslStream 正确地 TcpClient | 更新日期: 2023-09-27 18:16:23

如何正确地为具有TcpClientSslStream对象的类编写Dispose和Disconnect函数?

我应该这样做吗

protected virtual void Dispose(bool disposing)
{
    // release unmanaged memory
    if (disposing)
    {
        // release other disposable objects
        if (_sslStream != null)
        {
            _sslStream.Dispose();
            _sslStream = null;
        }
        if (_tcpClient != null)
        {
            _tcpClient.Close();
            _tcpClient = null;
        }
    }
}

或像这样的

public void Disconnect()
{
    _tcpClient.Client.Shutdown(SocketShutdown.Both);
    _tcpClient.Client.Disconnect(false);
    _tcpClient.GetStream().Close();
    _tcpClient.Close();
}

TcpClient类中有很多方法可以断开连接和关闭操作,但我不知道我应该更喜欢添加通过相同对象重新连接到服务器的能力。

如何正确地为具有TcpClient和SslStream对象的类编写Dispose和Disconnect函数

Dispose看起来不错。

Disconnect中我也会做一个Dispose

  1. 后面跟着再生成
  2. 或在下次使用时重新创建