Frage

ich zur Zeit schreibe eine WPF-Anwendung, die in App.xaml.cs Umgang mit Befehlszeilenargument macht (was notwendig ist, weil das Startup-Ereignis der empfohlene Weg, um auf diese Argumente zu sein scheint). Auf der Grundlage der Argumente, die ich das Programm an diesem Punkt beenden möge bereits die, soweit ich weiß, sollte in WPF mit Application.Current.Shutdown() oder in diesem Fall durchgeführt werden (wie ich in dem aktuellen Anwendungsobjekt am) wahrscheinlich auch nur this.Shutdown().

Das einzige Problem ist, dass dies scheint nicht richtig zu arbeiten. Ich habe immer noch, da ich mit dem Debugger und Code nach der Shutdown() Linie trat durch die später in dem Verfahren zu Fehlern führt, ausgeführt wird, die Anwendung nicht zu erwarten, so lange zu leben. Auch das Hauptfenster (im StartupUri Attribut in XAML deklariert) wird noch geladen.

Ich habe die Dokumentation dieser Methode überprüft und fand nichts in den Bemerkungen, die mir sagen, dass ich es nicht während Application.Startup oder Application überhaupt verwenden sollte.

Also, was ist der richtige Weg, um das Programm an diesem Punkt zu beenden, i. e. die Startup Event-Handler in einem Application Objekt?

War es hilfreich?

Lösung

Zuerst die StartupUri Eigenschaft von App.xaml entfernen, und dann verwenden Sie die folgende:

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        bool doShutDown = ...;

        if (doShutDown)
        {
            Shutdown(1);
            return;
        }
        else
        {
            this.StartupUri = new Uri("Window1.xaml", UriKind.Relative);
        }
    }

Andere Tipps

Wenn Sie die StartupUri von app.xaml für eine Anwendung entfernen, mit einem Hauptfenster Sie müssen sicherstellen, dass Sie die folgenden Aufruf in Ihrem OnStartup Verfahren machen sonst die Anwendung nicht beenden, wenn Ihr Hauptfenster geschlossen wird.

this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;

@Frank Schwieterman, etwas in dieser Richtung können Sie mit Ihrer Konsole Fenster Problem helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top