Die Folgen nicht Ihre IDisposables Entsorgung von einem vernachlässigbaren Leistungseinbußen variieren kann um deine App zu stürzen.
Das Brush-Objekt in Ihrem Beispiel wird vom GC bereinigt, wenn es sich anfühlt. Aber Ihr Programm hätte nicht den Vorteil des zusätzlichen Speichers gehabt, den Sie durch eine frühere Bereinigung erhalten hätten. Wenn Sie viele Brush-Objekte verwenden, kann dies erheblich werden. Der GC ist auch bei der Säuberung von Objekten effizienter, wenn sie nicht sehr lang sind, da es sich um einen Generations-Garbage-Collector handelt.
Auf der anderen Seite können die Folgen der Nicht-Bereitstellung von Datenbankverbindungsobjekten dazu führen, dass Ihnen die Pool-Datenbankverbindungen sehr schnell ausgehen und Ihre App zum Absturz gebracht wird.
Entweder verwenden
using (new DisposableThing...
{
...
}
Oder, wenn Sie einen Verweis auf ein IDisposable in Ihrem Objekt während seiner gesamten Lebensdauer zu halten brauchen, implementieren IDisposable auf Ihrem Objekt und rufen Sie die Dispose-Methode der IDisposable.
class MyClass : IDisposable
{
private IDisposable disposableThing;
public void DoStuffThatRequiresHavingAReferenceToDisposableThing() { ... }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
//etc... (see IDisposable on msdn)
}
Diese Antwort sollte erklären, wann Sie Ihre Ressourcen aufräumen müssen, nicht wann Sie sollten, wie andere es getan haben. Aus dem Ton der ursprünglichen Frage ging ich hervor, dass dies das Gewünschte war. – Guvante