关闭TcpClient时需要关闭流。通常的做法是:
client.GetStream().Close();
client.Close();
因此,仅使用client.Close()
是不够的。我的问题是client.Dispose()
是否与client.GetStream().Close()
相同,以便关闭如下:
client.Dispose();
client.Close();
我从阅读TcpClient参考源代码中理解到Dispose
方法关闭流,那么我是正确的还是有遗漏?非常感谢。
Close()
不够?在我看来应该没问题。通常情况下,我不会显式地调用Close()
或Dispose()
,而是使用using
语句。但只使用Dispose()
应该就足够了。 - Jon SkeetTcpClient.GetStream().Close
相同吗?请注意,Dispose
属于TcpClient
而不是NetworkStream
。 - vkr02692Close()
只关闭流,从 MSDN 中的Dispose
释放 TcpClient 使用的托管和非托管资源。 - BWATcpClient
没有清理底层流,我会认为它存在缺陷。依赖于消费者代码获取您的可处理内部并清理它们是一种灾难性的做法。 - James Thorpe