只是想知道在调试处理器中定义终结器是否是正确的方法(因为所有资源都是托管资源,实际上并不需要)来定位调用者(如果有的话),他们没有显式调用 Dispose。如果是这样,终结器将被调用并引发 Debug.Fail 消息。
Public class Foo: IDisposable
{
...
public void Dispose()
{
Dispose(true);
#if DEBUG
GC.SuppressFinalization();
#endif
}
protected virtual void Dispose(bool disposing_)
{
if (disposing_)
{
// Unsubscribe from any event handlers, etc.
}
}
#if DEBUG
~ Foo()
{
Dispose(false);
Debug.Fail("Dispose was not invoked by caller"); // <--
}
#endif
}