TcpClient.Dispose()是否关闭TcpClient.GetStream



要关闭TcpClient,必须关闭流。通常的方法是:

        client.GetStream().Close();
        client.Close();

所以仅仅使用client.Close()是不够的,我的问题是client.Dispose()client.GetStream().Close()一样工作吗,所以关闭会像一样

        client.Dispose();
        client.Close();

这就是我从Dispose方法关闭流时读取TcpClient引用源时所理解的,那么我是正确的还是遗漏了什么?提前谢谢。

Close调用DisposeDispose处理流:

IDisposable dataStream = m_DataStream;
if (dataStream != null)
{
    dataStream.Dispose();
}

您不需要同时调用CloseDispose。选择一个。

您可以查看源代码

IDisposable类通常有另一个与Dispose相同的方法,但使用不同的、特定于域的名称。IDisposable.Dispose通常是显式实现的,因此它可以由using语句使用或在强制转换后使用,但不会扰乱类的接口。

client.Dispose

client.Close 

做同样的事。一个电话就足够

并且两者都关闭网络流

来自MSDN

调用此方法最终将关闭关联的套接字,并且还将关闭用于发送和接收数据的关联NetworkStream(如果已创建)。

最新更新