在C#中处理调用Dispose(IsDisposing)模式的目的?

noc*_*ura 6 .net c# dispose design-patterns

这是来自MSDN的代码.我不明白为什么这里的工作不只是在常规的Dispose()方法中完成.使用Dispose(bool)方法的目的是什么?谁会在这里打电话给Dispose(false)?

public void Dispose() 
{
    Dispose(true);

    // Use SupressFinalize in case a subclass
    // of this type implements a finalizer.
    GC.SuppressFinalize(this);      
}

protected virtual void Dispose(bool disposing)
{
    // If you need thread safety, use a lock around these 
    // operations, as well as in your methods that use the resource.
    if (!_disposed)
    {
        if (disposing) {
            if (_resource != null)
                _resource.Dispose();
                Console.WriteLine("Object disposed.");
        }

        // Indicate that the instance has been disposed.
        _resource = null;
        _disposed = true;   
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 15

终结器将调用Dispose(false)- 在这种情况下,您不会触及任何其他托管资源(可能已经完成).

我个人经常不遵循这种模式 - 因为我只非常非常需要一个终结器,而且编写一个非密封的IDisposable实现也很少见.如果你正在写一个没有终结器的密封课程,我会选择一个简单的实现.