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