如何优雅地退出此应用程序?

时间:2011-07-26 22:52:41

标签: .net termination

为了在第一次启动应用程序时不在C#.NET中显示表单,我有:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        SomethingForm frmSomething = new SomethingForm();

        Application.Run();
    }

这是一个表单应用程序,SomethingForm是父表单,其中有Button退出,目前调用以下Application.ExitThread();。此按钮是退出应用程序的唯一方法。

现在我知道这不是优雅的终止,但这是我在测试时能够让它工作的唯一方法。现在,退出后将图标留在系统托盘中会出现一些问题。

那么我如何GRACEFULLY终止此应用程序?

3 个答案:

答案 0 :(得分:3)

只需从表单中调用this.Close()即可。假设这是唯一的表单,应用程序应该正常退出。

稍微不那么优雅的方式是使用Application.Exit()。这个问题是表单关闭事件没有引发(在.NET 1.1之后修复)。

答案 1 :(得分:2)

或使用:

Application.Exit() 

代码中的任何地方。

System.Environment.Exit(-1);

答案 2 :(得分:0)

如前所述,您可以Form.Close()Application.Shutdown()。您可能需要将Application.Current.ShutdownMode更改为Shutdown.OnLastWindowCloseShutdownMode.OnMainWindowCloseMSDN Application.ShutdownMode)。

您还提到通知图标有时会隐藏在通知区域中 - 一个可能的解决方法是调用Dispose()控件上的NotifyIcon来释放其资源。

编辑:我的建议可能是WPF应用程序,自从我使用WinForms以来已经有一段时间了。我希望你(或其他人)发现它有用。