当用户从文件菜单中单击退出菜单项时,应该如何退出应用程序?

我试过:

this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();

还有很多其他的。没有什么工作。


当前回答

要退出应用程序,您可以调用

System.Windows.Application.Current.Shutdown();

如应用程序文档中所述。你也可以通过指定ShutdownMode来修改应用程序的关机行为:

在以下情况下,Windows Presentation Foundation (WPF)会隐式调用Shutdown: 当ShutdownMode设置为OnLastWindowClose时。 当关机模式设置为OnMainWindowClose时。 当用户结束会话,而SessionEnding事件未被处理或在未取消的情况下被处理时。

请注意Application.Current.Shutdown();只能从创建Application对象的线程调用,即通常是主线程。

其他回答

在xaml代码中,你可以调用一个预定义的SystemCommand:

Command="SystemCommands.MinimizeWindowCommand"

我认为这应该是首选的方式……

private void _MenuExit_Click(object sender, RoutedEventArgs e)
{
   System.Windows.Application.Current.MainWindow.Close();
}

//Override the onClose method in the Application Main window

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    MessageBoxResult result =   MessageBox.Show("Do you really want to close", "",
                                          MessageBoxButton.OKCancel);
    if (result == MessageBoxResult.Cancel)
    {
       e.Cancel = true;
    }
    base.OnClosing(e);
}
if (System.Windows.Forms.Application.MessageLoop) 
{
    // WinForms app
    System.Windows.Forms.Application.Exit();
    system.Environment.Exit(1);
}

这应该可以达到目的:

Application.Current.Shutdown();

如果你感兴趣,这里有一些我认为有用的额外材料:

申请详情。当前的

WPF应用程序生命周期

根据需要使用以下任何一种方法:

1.

 App.Current.Shutdown();
OR
 Application.Current.Shutdown();

2.

 App.Current.MainWindow.Close();
OR
 Application.Current.MainWindow.Close();

以上所有的方法都会调用Window类的关闭事件,并且执行可能会在某个时候停止(因为通常应用程序会设置像'are you sure?或“关闭前要保存数据吗?”,在窗口完全关闭之前)

3.但如果您想立即终止应用程序而不发出任何警告。使用下面的

Environment.Exit(0);