Domanda

Attualmente sto scrivendo un'applicazione WPF che esegue la gestione degli argomenti della riga di comando in App.xaml.cs (che è necessario perché l'evento Startup sembra essere il modo consigliato per accedere a tali argomenti). Sulla base degli argomenti che desidero chiudere il programma già a quel punto che, per quanto ne so, dovrebbe essere fatto in WPF con Application.Current.Shutdown () o in questo caso (come lo sono io nell'oggetto corrente dell'applicazione) probabilmente anche solo this.Shutdown () .

L'unico problema è che questo non sembra funzionare correttamente. Ho esaminato il debugger e il codice dopo che la riga Shutdown () è stata ancora eseguita, il che porta a errori in seguito nel metodo, poiché mi aspettavo che l'applicazione non durasse a lungo. Anche la finestra principale (dichiarata nell'attributo StartupUri in XAML) viene ancora caricata.

Ho controllato la documentazione di quel metodo e non ho trovato nulla nelle osservazioni che mi dicono che non dovrei usarlo durante Application.Startup o Application .

Quindi, qual è il modo giusto per uscire dal programma a quel punto, i. & nbsp; e. il gestore di eventi Startup in un oggetto Application ?

È stato utile?

Soluzione

Rimuovere innanzitutto la proprietà StartupUri da App.xaml e quindi utilizzare quanto segue:

    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);
        }
    }

Altri suggerimenti

Se rimuovi StartupUri da app.xaml per un'applicazione con una finestra principale, devi assicurarti di effettuare la seguente chiamata nel tuo metodo OnStartup, altrimenti l'applicazione non verrà chiusa alla chiusura della finestra principale.

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

@Frank Schwieterman, qualcosa del genere potrebbe aiutarti con il problema della finestra della tua console.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top