Wann sollte ich GC.SuppressFinalize (dies) nicht in Entsorgung aufrufen?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wann sollte ich GC.SuppressFinalize (dies) nicht in Entsorgung aufrufen?

Post by Guest »

Ich habe eine einfache Klasse wie diese, die idisposable implementiert, und so wird sie von einem CA1816 getroffen: Rufen Sie GC.SuppressFinalize korrekt: ">

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) 
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"?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post