作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个使用(作为私有(private)字段)TcpClient
对象的类(比如 MyClass
)。 MyClass
实现 IDisposable
在 Dispose
方法中调用 TcpClient.Close
。
我的问题是 MyClass
是否还应该实现一个终结器来调用 Dispose(bool Disposing)
以释放 TcpClient 的
非托管资源,以防 MyClass.Dispose
没有被调用代码调用?
谢谢
最佳答案
不,你不应该。
因为你不应该在终结器中调用其他对象的方法,它可能在你的对象之前被终结。
你的 TcpClient 的终结器将被垃圾收集器调用,所以让他来做吧。
Dispose 中的模式是:
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// dispose managed resources (here your TcpClient)
}
// dispose your unmanaged resources
// handles etc using static interop methods.
}
关于c# - 需要在使用 TcpClient 的类上实现终结器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/541797/
据我所知,不能保证 Object.finalize() 总是被调用。但是如果有重要的非GC资源,并且用户没有意外调用close(),我该如何释放该资源?PS。 .NET中的Object.Finaliz
我是一名优秀的程序员,十分优秀!