Ist das Entsäule -Muster ohne Finalizer Sinn?
Posted: 20 Mar 2025, 12:30
Angesichts dieses Code im Dispose-Muster aus msdn < /p>
Warum sollte ein Aufruf von gc.suppressFinalize (this) Wenn das Objekt keinen Finalizer hat? Wenn mein Verständnis richtig ist, erreicht das Objekt nicht einmal eine Finalization -Warteschlange, von der er zuerst entfernt werden soll. Was fehlt mir, warum empfiehlt Microsoft das?
Code: Select all
public class DisposableResourceHolder : IDisposable {
private SafeHandle resource; // handle to a resource
public DisposableResourceHolder() {
this.resource = ... // allocates the resource
}
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing) {
if (disposing) {
if (resource!= null) resource.Dispose();
}
}
}