Bei Form.Close() sofort schließen

Hallo zusammen,

ich bin auf ein Problem gestoßen (Windows.Forms, Framework 1.1), das mir nun das Leben schwer macht. Ich dachte bisher, dass nach dem Aufruf von „this.Close()“ das Hauptformular unmittelbar geschlossen wird. Falls jedoch die aufrufende Methode noch nicht fertig ist, wird noch der dahinter stehende Code ausgeführt und erst danach die Applikation geschlossen.

Das Problem, das dann nämlich manchmal auftaucht, ist, dass durch Form.Close() ein Form.Dispose() ausgeführt wird, der bewirkt, dass beim folgenden Code evtl. eine Ausnahme ausgelöst wird.

Was kann ich da tun?

Viele Grüße
Alexander

Hi!

Beim Aufruf an Form.Close() wird letztlich nur eine WM_CLOSE in die Nachrichtenwarteschlange des Dialogs gepackt.
Ausgewertet wird diese Nachricht dann, wenn der Thread des Fensters diese Nachricht aus der Warteschlange liest und das passiert frühestens, wenn die Methode, in der Close() aufgerufen wurde, durchgelaufen ist.

Daran lässt sich auch nichts ändern - Du solltest daher darauf achten, dass nach dem Close() nichts mehr mit dem Dialog selbst gemacht wird oder jeweils die Eigenschaft Form.Disposed abfragen.

Gruß,
Martin

Kannst du nicht einfach die aufrufende Funktion ebenfalls beenden, wenn du das Fenster schließt?

Das Schließen des Fensters muss ja an eine Bedingung geknüpft sein, die gleichzeitig auch verhindern soll, dass der Code dahinter ausgeführt werden soll.

Fügst du einfach in den if-Anweisungsblock zusätzlich einen speziellen Rückgabewert ein (NULL?) und fängst diesen Rückgabewert ab, sollte es doch eigentlich gehen.

Grüße,
Alexander