Я использую шаблон (шаблон) для IDisposable по умолчанию для моего кода.
сниппет:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool isDisposing)
{
if (!this.disposed)
{
if (isDisposing)
{
//cleanup managed resources
}
//cleanup unmanaged resources
this.disposed = true;
}
}
Мой вопрос: почему вызов "GC.SuppressFinalize(this)" в публичном методе Dispose? Я бы поставил "GC.SuppressFinalize(this)" в разделе "if (isDisposing)" защищенного метода после удаления управляемых ресурсов.
Вот так:
protected virtual void Dispose(bool isDisposing)
{
if (!this.disposed)
{
if (isDisposing)
{
//cleanup managed resources
GC.SuppressFinalize(this);
}
//cleanup unmanaged resources
this.disposed = true;
}
}