Eigentlich ein Thema, das mich schon lange nicht mehr betroffen hat, aber ich muss da heute mal darauf zu sprechen kommen. Hintergrund ist, dass ich einen sehr guten Blog gefunden habe, den es wirklich lohnt hin und wieder durch zu schauen: http://frickelblog.de

So. Was hat das aber mit diesem Thema zu tun? Der gute Herr Schmalle hat ein Beispiel angebracht, wie man den Fehler „auf das verworfene Objekt kann nicht zugegriffen werden“ umgehen kann, wenn man eine Form bereits beim Öffnen gleich wieder Schließen will. In seinem Beispiel sieht das so aus, dass er verschiedene Parameter im FormLoad überprüft und bei einem bestimmten Parameter dann die Form wieder schließen will. Wenn man aber* this.Close()* verwendet, tritt der oben genannte Fehler auf, weil das Objekt – die Form ja noch nicht fertig erstellt ist.

Die Lösung im FrickelBlog ist, dass man statt this.Close() eher Application.Exit() verwenden soll. Damit tritt der Fehler dann zwar nicht auf, aber es wird auch nicht die Form geschlossen, sondern die Anwendung beendet. In seinem Fall mag das sicherlich eine funktionierende Lösung sein, weil seine Anwendung wohl nur aus einer Form besteht. Aber die Lösung trifft eben nicht immer zu.

Was kann man also anders machen? Oder eine kleine Gegenfrage: Warum erstellt man eine Form um dann festzustellen, dass man sie doch nicht braucht? Genau darauf will ich hinaus. Man sollte vor dem Erstellen der Form bereits die Parameter überprüfen und sollte der entsprechende Parameter gesetzt sein, muss man auch die Form gar nicht öffnen. Diesen Gedankengang sollte man übrigens grundsätzlich beachten. Das spart wertvoll Performance gerade bei größeren Projekten. Immer erst überlegen, ob man ein Objekt überhaupt benötigt. Eine Form ist letztendlich auch nur ein Objekt. Noch dazu ein sehr großen Objekt, dass von Haus aus schon mal seine Zeit zum Erstellen benötigt.