要关闭TcpClient,必须关闭流。通常的做法是:
client.GetStream().Close();
client.Close();因此,仅使用client.Close()本身是不够的,我的问题是,client.Dispose()是否与client.GetStream().Close()一样工作,因此结束操作将类似于
client.Dispose();
client.Close();当TcpClient参考源方法关闭流时,我通过阅读Dispose理解了这一点,所以我是正确的还是遗漏了什么?谢谢你的进阶。
发布于 2015-12-24 10:35:14
Close调用Dispose,Dispose处理流:
IDisposable dataStream = m_DataStream;
if (dataStream != null)
{
dataStream.Dispose();
}您不需要同时调用Close和Dispose。选择一个。
您可以检查源代码
IDisposable类使用与Dispose相同的另一种方法,但使用不同的特定于域的名称,这是很常见的。IDisposable.Dispose通常是显式实现的,因此它可以由using语句使用,也可以在转换之后使用,但不会干扰类的接口。
发布于 2015-12-24 10:35:08
client.Dispose或
client.Close 做同样的事。一个电话就够了
并且都关闭了网络流
来自MSDN
调用此方法最终将导致关联套接字的关闭,还将关闭用于发送和接收数据的关联NetworkStream (如果创建的话)。
https://stackoverflow.com/questions/34451355
复制相似问题