Warum brauchen wir den Parameter disposing im folgenden Code-Snippet?
Darüber hinaus rufe ich auf, mit false, im Finalizer, und es wird nicht freigegeben oder die Aufräumarbeiten.
Was ist also, wenn wir uns nie anrufen lassen?
Wird nicht immer vor dem Finalizer angerufen?
%Vor%Mit anderen Worten, warum nicht?
%Vor%Brauche ich wirklich Finalizer? Warum nicht das?
%Vor%Darüber hinaus rufe ich auf, mit false, im Finalizer, und es wird nicht freigegeben oder die Aufräumarbeiten.
In der Tat - es wird davon ausgegangen, dass andere Klassen in diesem Fall ihre eigene Bereinigung durchführen und nur die direkten nicht verwalteten Ressourcen bereinigen.
Was also, wenn wir uns nie anstellen?
Dann wird der Finalizer aufgerufen und er wird alle direkten nicht verwalteten Ressourcen bereinigen, ohne sich um indirekte Ressourcen zu kümmern.
Wird nicht immer vor dem Finalizer angerufen?
Nicht, wenn niemand es aus irgendeinem Grund anruft.
Ich denke, dass dieses Muster komplizierter ist, als es sein muss, da es versucht, Klassen zu berücksichtigen, die als Basisklassen für andere Klassen dienen, die Finalisten brauchen könnten. Versiegeln Sie Ihre Klassen und Sie können genau das umsetzen, was Sie erwarten würden:)
Vielleicht möchten Sie auch Joe Duffys "Never schreiben Sie erneut einen Finalizer " Blogpost und die langen Erklärung des Musters .