2016-04-18 10 views

Antwort

4

Die PictureBox kann nicht wissen, ob Sie das Bild entsorgt haben möchten - Sie könnten es an anderer Stelle in Ihrer App verwenden. So ist es nicht explizit Dispose es. Wenn die PictureBox die letzte Referenz darauf enthielt, wird sie für die Garbage Collection geeignet, und Dispose wird als Teil der Finalisierung aufgerufen, aber wenn das passiert, liegt das an dem Garbage Collector. In der Zwischenzeit konsumiert das noch nicht vorhandene Bitmap nicht verwaltete Ressourcen und hält höchstwahrscheinlich einen Stream offen, der Änderungen an der Quelldatei verhindert, so dass die Dinge "immer dann" bereinigt werden können, wenn sie eine schlechte Praxis ist.

Wenn Sie wissen, dass Sie mit dem Bitmap zu der Zeit fertig sind zu ändern, was PictureBox.Image Punkte, fügen Sie genau dort ein extra paar Zeilen des alten zu entsorgen und fertig:

Image tmp = myPictureBox.Image; 
myPictureBox.Image = newImage; 
if (tmp != null) 
{ 
    tmp.Dispose(); 
} 
+0

Diese ist was ich vermutet habe, danke. – KDecker