Die Verwendung von Dispose für ein Singleton zu Bereinigung Ressourcen

Die Frage, die ich habe vielleicht mehr zu tun mit der Semantik, als mit der tatsächlichen Verwendung von IDisposable. Ich arbeite an der Umsetzung eines singleton-Klasse, die ist verantwortlich für die Verwaltung einer Datenbank-Instanz ist, dass während der Ausführung der Anwendung. Wenn die Anwendung geschlossen wird diese Datenbank gelöscht werden sollen.

Nun habe ich dieses löschen erfolgt durch eine Cleanup() - Methode des singleton, die die Anwendung aufruft, wenn Sie geschlossen wird. Als ich war das schreiben der Dokumentation für Cleanup() es fiel mir auf, dass ich beschreiben, was eine Dispose() Methode sollte verwendet werden, für z.B. Reinigungs-Ressourcen. Ich hatte ursprünglich nicht implementiert IDisposable da es schien, der Platz in meinem singleton, weil ich nicht wollen, etwas zu entsorgen das singleton selbst. Es ist derzeit nicht, aber in der Zukunft könnte ein Grund dafür sein, dass diese Cleanup() genannt werden könnte, sondern das singleton sollte müssen immer noch existieren. Ich denke, ich kann zählen GC.SuppressFinalize(this); in der Dispose-Methode machen dies möglich.

Meine Frage ist daher, multi-geteilt:

1) Ist die Umsetzung IDisposable auf ein singleton ist grundsätzlich eine schlechte Idee?

2) Bin ich gerade mischen Semantik hier durch eine Cleanup() statt einer Dispose() - und da bin ich der Entsorgung Ressourcen, die ich wirklich verwenden sollte entsorgen?

3) Wird die Umsetzung von "Dispose ()" mit GC.SuppressFinalize(this); es so machen, mein singleton ist eigentlich nicht zerstört in dem Fall möchte ich es zu Leben, nachdem ein Aufruf zum clean-up der Datenbank.

InformationsquelleAutor Craig Suchanec | 2010-05-28

Schreibe einen Kommentar