Wann sollte ich GC.SuppressFinalize (dies) nicht in Entsorgung aufrufen?
Posted: 22 Feb 2025, 11:31
Ich habe eine einfache Klasse wie diese, die idisposable implementiert, und so wird sie von einem CA1816 getroffen: Rufen Sie GC.SuppressFinalize korrekt: "> in meine hinzufügen Dispose Methode, wenn ich nicht verstehe, was es ist? und unterdrücken einfach die Warnung? /Code> tut. Ich weiß Müssen Sie aufgeräumt werden? Und was ist mit dem Warnsteil von "Dies verhindert abgeleitete Typen, die ein Finalizer daran hindern, erneut zu implementieren"?
Code: Select all
public class A : IDisposable
{
// ...
int foo
public A()
{
SomeObj.SomeEvent += DoSomething;
}
public void Dispose()
{
SomeObj.SomeEvent -= DoSomething;
}
}
< /code>
Änderung a.dispon (), um gc.suppressFinalize (Objekt) aufzurufen. Dies verhindert abgeleitete Typen, die ein Finalizer daran hindern, 'idisposable' neu zu implementieren, um ihn zu nennen. Aber ich verstehe immer noch nicht genau, wofür das ist (mehr Erklärung unten). Also [b] meine Fragen sind [/b]:
Sollte ich immer nur gc.suppressFinalize (Objekt)