退出.NET应用程序的通用方法

mic*_*ael 23 c# wpf console-application exit winforms

我知道有几种方法可以退出应用程序,例如Application.Exit(),Application.ExitThread(),Environment.Exit()等.

我有一个外部的"公共"库,我正在尝试创建一个通用的FailIf方法,将失败记录到日志中,执行此操作以及此操作,然后最终退出应用程序...这里是一个简短的版本它.

    public static void FailIf(Boolean fail, String message, Int32 exitCode = 1)
    {
        if (String.IsNullOrEmpty(message))
            throw new ArgumentNullException("message");

        if (fail)
        {
            //Do whatever I need to do

            //Currently Environment.Exit(exitCode)
            Environment.Exit(exitCode);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经读过使用Environment.Exit不是处理WinForm应用程序的最佳方式,而且当使用WPF应用程序和Silverlight时,有不同的方法可以退出...我的问题是:

我可以优雅地退出以涵盖所有应用程序类型?

Yoc*_*mer 30

阅读本文,了解使用环境和应用程序之间的区别:

Application.Exit Vs Environment.Exit

有一个例子,你想在该页面的底部做什么:

if (System.Windows.Forms.Application.MessageLoop)
{
  // Use this since we are a WinForms app
  System.Windows.Forms.Application.Exit();
}
else
{
  // Use this since we are a console app
  System.Environment.Exit(1);
}
Run Code Online (Sandbox Code Playgroud)