要关闭TcpClient,必须关闭流.通常的做法是:
client.GetStream().Close(); client.Close();
因此单独使用client.Close()
是不够的,我的问题是client.Dispose()
工作是否相同,client.GetStream().Close()
因此结束将是
client.Dispose(); client.Close();
这是我从阅读TcpClient参考源中理解的,因为该Dispose
方法关闭了流,所以我是正确的还是我错过了什么?先谢谢你.
Close
调用Dispose
,Dispose
处理流:
IDisposable dataStream = m_DataStream; if (dataStream != null) { dataStream.Dispose(); }
你不需要同时调用Close
和Dispose
.选一个.
您可以查看源代码
对于IDisposable
类而言,使用另一种方法执行相同操作Dispose
,但具有不同的特定于域的名称是很常见的.通常IDisposable.Dispose
是显式实现的,因此可以通过using
语句或强制转换使用它,但不会使类的接口混乱.