多次调用SuppressFinalize
是否有多次调用GC.SuppressFinalize(object)
缺点?
处置模式的受保护的Dispose(bool)
方法检查之前是否调用它,但是在公共Dispose()
方法中没有这样的检查。
public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (_Disposed) return; if (disposing) { // Cleanup managed resources. } // Cleanup unmanaged resources. _Disposed = true; } ~MyClass() { Dispose(false); }
可以多次调用MyClass
实例的Dispose()
方法吗?
根据文档: http : //msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx ,它在对象头中设置了一些位,因此不应该有多次调用它的含义。