Ich habe ein ConcurrentDictionary in meiner Sitzungsklasse.
Key ist eine Schnittstelle, die eine Managerklasse darstellt.
Value ist eine Liste von DataContracts-Klassen, die für diesen Manager in dieser Sitzung verwendet werden.
Wenn ich die Sitzungsklasse entsorgen möchte, möchte ich dieses Wörterbuch löschen. Ich muss alle Werte und Schlüssel löschen, aber ich kann die Schlüssel nicht entsorgen - da sie nach dem Ablegen noch vorhanden sind ..
Reicht das? - Wird der GC die Arbeit übernehmen?
%Vor%Oder ich muss mit einer foreach auf allen Schlüsseln iterieren und die Remove verwenden, um Werte zu löschen.
Wenn ich die Sitzungsklasse entsorgen möchte, möchte ich dieses Wörterbuch löschen.
Warum? Wenn die Sitzungsinstanz für die Garbage Collection geeignet wird und die Sitzung das einzige Objekt ist, das auf das Dictionary verweist, wird das Dictionary für die Garbage Collection geeignet.
Reicht das? - Wird der GC die Arbeit übernehmen?
Es ist fast sicher unnötig. Wenn etwas anderes einen Verweis auf das Wörterbuch enthält, hat das Festlegen der Variablen that auf null
keine Auswirkung. Wenn nichts anderes einen Verweis auf das Wörterbuch enthält und die Sitzung für die Garbage Collection geeignet wird, müssen Sie dies überhaupt nicht tun.
Die einzige Zeit, die es wert ist, eine Variable aus Gründen der Garbage Collection auf null zu setzen, ist, wann diese Variable selbst weiterleben wird (zB ist es eine Instanzvariable in einem Objekt, die nicht ist) gesammelt, oder es ist eine statische Variable).
Beachten Sie, dass die Speicherbereinigung übrigens völlig unabhängig von der "Entsorgung" von Objekten ist. Dispose
und IDisposable
beziehen sich im Allgemeinen auf unmanaged Ressourcen, und in Ihrer Frage gibt es keinen Hinweis darauf, dass dieses Konzept hier relevant ist.