5 c# idisposable finalizer unmanagedresources
我有一个类(比如说MyClass
)使用(作为私有字段)一个TcpClient
对象.MyClass
实现IDisposable
调用TcpClient.Close
的Dispose
方法.
我的问题是MyClass
还应该实现一个终结器来调用Dispose(bool Disposing)
释放TcpClient’s
非托管资源,以防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.
}
Run Code Online (Sandbox Code Playgroud)