Laden...

Anwendung beendet sich nicht

Erstellt von C4RL0 vor 3 Jahren Letzter Beitrag vor 3 Jahren 761 Views
C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 3 Jahren
Anwendung beendet sich nicht

Hallo zusammen,
ich starte eine Forms Anwendung wie folgt um erst mal ohne Fenster zu starten. Erst wenn gewisse Bedingungen vorherrschen, soll die Anwendung sichtbar werden, wenn nicht, mit einer Meldung geschlossen werden.


                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                using(FormMain formMain = new FormMain())
                    Application.Run();

Das Problem ist, dass ich die Anwendung aus der formMain heraus nicht geschlossen bekomme.
Selbst wenn im Konstruktor als erstes

Application.Exit();

steht, läuft die Anwendung weiter.
Was mache ich verkehrt?
Ich habe festgestellt, dass ich mit

Environment.Exit(1);

ans Ziel komme, nur verstehe ich es nicht.


Gruß
Carlo

"Palabras que no coinciden con hechos no valen nada."

4.931 Beiträge seit 2008
vor 3 Jahren

Wenn du Application.Exit() im Form-Konstruktor aufrufst, so ist das zu früh, da zu diesem Zeitpunkt ja noch nicht Application.Run() läuft (aber in Load oder Shown sollte es funktionieren sofern du die Application.Run(Form)-Überladung benutzt).

Aber warum überhaupt so?

Du kannst ja vor dem Aufruf noch beliebige Abfragen machen, d.h. in etwa so


if (...)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    using(FormMain formMain = new FormMain())
    {
        if (...)
           Application.Run(formMain);
    }
}

Und wenn du doch Application.Run nicht direkt mit der Form verknüpfen willst, dann solltest du besser die Application.Run(ApplicationContext)-Überladung benutzen.

C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 3 Jahren

Okay, danke für die Ausführungen.

Du kannst ja vor dem Aufruf noch beliebige Abfragen machen...

Damit hast Du natürlich völlig recht, irgendwie hatte ich das nicht "gesehen".
Damit läüfts prima.

Application.Run(ApplicationContext) werde ich mir mal anschauen, habe ich so noch nie verwendet.

Danke!


Gruß
Carlo

"Palabras que no coinciden con hechos no valen nada."