Ich habe eine Klasse mit umfangreichen statischen Mitgliedern, von denen einige Verweise auf verwaltete und nicht verwaltete Objekte behalten.Wie und wann sind C# statische Elemente entsorgt?
Zum Beispiel wird der statische Konstruktor aufgerufen, sobald der Typ Bezug genommen wird, die meine Klasse verursacht eine Blocking von Aufgaben spin up. Dies geschieht beispielsweise, wenn eine der statischen Methoden aufgerufen wird.
Ich habe IDisposable implementiert, was mir Methoden zur Verfügung stellt, um die Beseitigung von allen Instanzobjekten zu behandeln, die ich erstellt habe. Diese Methoden werden jedoch nie aufgerufen, wenn der Konsument keine Instanzobjekte aus meiner Klasse erstellt.
Wie und wo kann ich Code setzte die vom statischen Teil meiner Klasse gehalten zu entsorgen? Ich dachte immer, dass die Entsorgung von Ressourcen mit statischer Referenz erfolgte, als das letzte Instanzobjekt freigegeben wurde. Dies ist das erste Mal, dass ich eine Klasse erstellt habe, in der niemals Instanzen erstellt werden können.
Statische Elemente sind für die gesamte Ausführung der Anwendung zur Verfügung. Sie erstellen keine statischen Elemente, indem Sie das Schlüsselwort NEW verwenden. Dies bedeutet, dass Sie nicht mehrere Instanzen von irgendetwas haben, da Sie tatsächlich nichts instanziieren. Über verwaltete Objekte, mach dir keine Sorgen um sie, der GC wird sich um sie kümmern. Über nicht verwaltete Ressourcen versuchen, sie in einer nicht statischen Klasse zu verwenden, oder sie werden beibehalten, bis Sie Ihre Anwendung schließen. Statische Elemente unterstützen keine Entsorgung. – alexandrudicu
Danke. Sieht so aus, als müsste ich mein Design hier überdenken. – Joe