【发布时间】:2017-05-15 07:11:53
【问题描述】:
我正在阅读 the documentation on TcpClient.Close() 并注意到这一点:
调用此方法最终会导致关联的 Socket 关闭,并且还会关闭关联的用于发送和接收数据的 NetworkStream(如果已创建)。
所以,如果我错了,请纠正我,但这表示如果有人在 TcpClient 上调用 Close(),NetworkStream 也将被关闭。
那么为什么在代码示例的末尾都调用了Close()?
networkStream.Close();
tcpClient.Close();
只打电话tcpClient.Close();也可以吗?
【问题讨论】:
-
是的,没有必要。在该示例中使用 tcpClient.Close() 也不是必需的,程序在此之后立即终止:)
-
在 .NET 3.0 之前,TcpClient 和底层 NetworkStream 都必须显式关闭。从 .NET 3.0 开始,底层 NetworkStream 在关闭 TcpClient 时关闭。 TcpClient 上的 Close() 和 Dispose() 是等效的,Close() 添加了一些内部日志记录。
标签: c# dispose tcpclient networkstream