Limitações do evento Application.Startup (bug?)

Diz, eu posso usarStartup evento para muitas coisas, como inicialização, criação de vários formulários, blablabla.

No entanto, tente criar um novo aplicativo WPF e adicione este manipulador de eventos:

    private void App_Startup(object sender, StartupEventArgs e)
    {
        Window window = new Window();
    }

E depois de fechar a janela principal, seu aplicativo será desligado na memória. Pausar a execução no VS nesse momento cairá feiobatida janela da pilha de chamadas com muitas chamadas em algum lugar longe do meu código-fonte.

Alguma ideia?

P.S .: Preciso instanciar todas as minhas janelas para fins de configuração de autoaprendizagem uma vez. Devo usar algum outro lugar?

Deixe-me dar um exemplo melhor (o exemplo acima é bom para reproduzir o problema, parece difícil entender o que estou realmente fazendo). eu removoStartupUri e depois:

    private void App_Startup(object sender, StartupEventArgs e)
    {
        // un-comment this line to reproduce the problem:
        // Window window = new Window();

        // actual implementation will be
        // Window1 window1 = new Window1();
        // Window2 window2 = new Window2();
        // Window3 window3 = new Window3();
        // Window4 window4 = new Window4();
        // ...

        // start main window as usually
        MainWindow mainWindow = new MainWindow();
        mainWindow.Show();
    }

E por que preciso de instâncias do windows (window1, ..2, ..3, ...)? Porque o conteúdo deles será inspecionado para criar uma lista de controles para os quais desejo salvar a configuração. Algumas dessas janelas serãoNunca ser mostrado ao usuário (por exemplo, se ele não for administrador), alguns deles são pop-ups, alguns são editores, etc. Portanto, não quero exibi-los. Porém, em qualquer inicialização do aplicativo, a configuração deve ser criada e salva. E agora estou procurando o lugar para fazê-lo.

Surpreendentemente, usando evento dedicadoStartup parece ter algumproblemas com a criação de várias janelas, masnão exibindo eles. A questão é por que e como resolvê-lo.

Testando um pouco mais. Experimente este código e me explique por que o aplicativo é fechado sem mostrarqualquer janela?

    private void App_Startup(object sender, StartupEventArgs e)
    {
        Window window = new Window();
        window.Close(); // closing without opening window

        MainWindow mainWindow = new MainWindow();
        mainWindow.Show();
        //mainWindow = new MainWindow(); // can be un-commented, for absolutely no effect
        mainWindow.Show();
        mainWindow.Show();
        mainWindow.Show();
        mainWindow.Show(); // you will not see mainWindow at all, all Show doing nothing
    }

Mais perguntas. O que eu faço?

Algo que funciona, mas cheira:

    private void App_Startup(object sender, StartupEventArgs e)
    {
        Window window = new Window();

        MainWindow mainWindow = new MainWindow();
        mainWindow.ShowDialog();
        Shutdown();
    }

Observe, chamandoShowDialog (que fará o manipulador de eventos aguardar o fechamento da janela) e chamarShutdown logo depois.

Ainda não está claro qual é o problema noStartup manipulador de eventos para criar instâncias de algumas janelas. Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion