代码之家  ›  专栏  ›  技术社区  ›  Joey

从app.xaml.cs关闭WPF应用程序

  •  35
  • Joey  · 技术社区  · 15 年前

    我目前正在编写一个WPF应用程序,它在app.xaml.cs中执行命令行参数处理(这是必需的,因为启动事件似乎是获取这些参数的推荐方法)。基于参数,我希望在那个时候退出程序,据我所知,应该在WPF中用 Application.Current.Shutdown() 或者在这种情况下(就像我在当前应用程序对象中一样),也可能只是 this.Shutdown() .

    唯一的问题是,这似乎行不通。我已经使用了调试器和代码, Shutdown() 行仍然会被执行,这会导致之后在方法中出错,因为我希望应用程序不会活那么长时间。此外,主窗口(在XAML的startupuri属性中声明)仍将被加载。

    我已经检查了该方法的文档,但在备注中没有发现任何内容告诉我在 Application.Startup Application 完全。

    那么,在那个时候退出程序的正确方法是什么,即 Startup 事件处理程序 应用 对象?

    2 回复  |  直到 11 年前
        1
  •  49
  •   Jakob Christensen    15 年前

    首先从app.xaml中删除startupuri属性,然后使用以下内容:

        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);
            }
        }
    
        2
  •  8
  •   FodderZone    11 年前

    如果从带有主窗口的应用程序的app.xaml中删除startupuri,则需要确保在onStartup方法中进行以下调用,否则当主窗口关闭时,应用程序将不会终止。

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

    @FrankSchwiterman,这些方面的内容可能会帮助您解决控制台窗口问题。