2012-04-15 12 views
2

Kontext: die Anwendung, die ich versuche, zeigt zunächst kein Formular, sondern nur einen geöffneten Dateidialog. Nach dem Auswählen einer Datei kann die Anwendung ein Formular schließen oder öffnen.Application.Exit nach Application.Run funktioniert nicht

Ich habe Probleme beim Schließen meiner Anwendung nach dem Aufruf von Application.Run(). Das folgende Beispiel erzeugt keine Anwendung, die sich selbst umbringt.

Nebenbei bemerkt, welche Vorbereitungen muss ich treffen, bevor ich ein Formular öffnen kann? Muss ich Application.Run anrufen, bevor ich Formulare anzeigen kann?

Vielen Dank! XOXO

+3

Aber in diesem Code rufen Sie 'Exit()' * vor * 'Run()'. – svick

+0

Sie haben Recht. Wie kann ich den Exit-Aufruf nach dem Aufruf ausführen lassen? Kann ich den Exit-Aufruf an die Nachrichtenschleife senden, die Application.Run() ausführt? – KeyboardDrummer

Antwort

1

Sie könnten versuchen, den Ausgang Logik auf ein neues Verfahren zu bewegen:

class Context : ApplicationContext 
{ 
    public void Exit() 
    { 
    Application.Exit(); 
    } 
} 

und haben context.Exit()Application.Run Anruf, wenn

benötigt

Das Problem mit dem ursprünglichen Ansatz ist, dass Sie die platziert Exit-Logik im Konstruktor Context, was bedeutet, jedes Mal, wenn Sie ein Context Objekt erstellen, haben Sie die Möglichkeit, Ihr Programm zu beenden (es ist eine Gewissheit im Fall des Codes, den Sie gepostet haben). Stattdessen muss Context alle relevanten (Kontext-) Informationen erfassen und basierend auf dieser Information die Entscheidung zum Beenden treffen, wenn nach der Erstellung ein expliziter Methodenaufruf erfolgt.

2
var context = new Context(); 

Mit dieser Anweisung führt Ihre Anwendung Application.Exit() aus; Danach wird Ihre Anweisung Application.Run ausgeführt. Dies könnte der Grund sein

Verwandte Themen