Pergunta

Atualmente, estou escrevendo um aplicativo WPF que faz a manipulação argumento de linha de comando no App.xaml.cs (que é necessário porque o evento Startup parece ser a maneira recomendada de obter a esses argumentos). Com base nos argumentos que quero sair do programa a já nesse ponto que, tanto quanto eu sei, deve ser feito em WPF com Application.Current.Shutdown() ou neste caso (como eu estou no objeto do aplicativo atual) provavelmente também só this.Shutdown().

O único problema é que este não parece certo trabalho. Eu já atravessou com o depurador e código após a linha Shutdown() ainda é executado o que leva a erros depois no método, desde que eu esperava que o aplicativo não viver por muito tempo. Além disso, a janela principal (declarado no atributo StartupUri em XAML) ainda é carregado.

Eu verifiquei a documentação desse método e não encontrou nada nas observações que me dizem que eu não deveria usá-lo durante Application.Startup ou Application em tudo.

Então, o que é o caminho certo para sair do programa naquele ponto, i. e. o manipulador de eventos Startup em um objeto Application?

Foi útil?

Solução

Em primeiro lugar remover a propriedade StartupUri de App.xaml e, em seguida, use o seguinte:

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

Outras dicas

Se você remover o StartupUri de app.xaml para uma aplicação com uma MainWindow você precisa ter certeza de que você faça a seguinte chamada em seu método OnStartup caso contrário a aplicação não irá terminar quando seus fecha mainwindow.

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

@Frank Schwieterman, algo ao longo destas linhas podem ajudá-lo com seu problema janela de console.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top