Ja, Sie sollten das alte Objekt entsorgen, bevor Sie ein neues Bild über der gleichen Variablen erstellen. Wenn Sie ein neues Bild mit derselben Variablen erstellen, entfernen Sie einen Verweis darauf. Wenn es keine Referenzen auf das alte Objekt gibt, bedeutet dies, dass es vom GC (Garbage Collector) abgeholt werden sollte. Obwohl dies "theoretisch" dazu führen sollte, dass der Speicher freigegeben wird, vorausgesetzt, dass der Finalizer dafür sorgt, dass nicht verwaltete Ressourcen berücksichtigt werden, ist dies eine große Annahme (Sie können nicht wirklich davon ausgehen, dass der Finalizer aufgerufen wird). und es verursacht mehr Arbeit für das System. Nicht standardmäßige Finalizer verursachen zusätzliche Arbeit für den GC in Bezug auf die Garbage-Collection-Level-Promotion, was dazu führt, dass die Deallokierung des Speichers länger dauert und die Anzahl der Male, die der GC dazu ausgeführt werden muss.
Dies wird davon ausgegangen, dass alle geschrieben wird, um sicherzustellen, dass der Finalizer es behandelt. Jedes Mal, wenn ein Objekt eine Dispose-Methode hat (alles, was IDisposable implementiert, was BitMap tut), sollte es aufgerufen werden, bevor die Referenz auf das Objekt entfernt wird (außerhalb des Gültigkeitsbereichs, Entfernung der Referenz auf das Objekt usw.). Hier
ist ein Artikel darüber, wie der Garbage Collector arbeitet in .net
http://www.devx.com/dotnet/Article/33167
Hier ist, wie MS sagt der dispose/Finalizerthread umgesetzt werden sollten:
http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx
Vielen Dank für das Sie sich für mich zu löschen. Ich kenne alle Konzepte in Ihrer Antwort, aber an manchen Tagen habe ich ein Gehirnfrost! Schon mal vergessen, wie man ein kurzes Wort buchstabiert? So fühlt es sich an. – Jules