退出命令行程序的首选方法 - 第2部分

时间:2013-11-14 19:42:06

标签: c#

我尝试编辑此问题:What's the preferred way of exiting a command line program?

但我的编辑被拒绝了。我不被允许发表评论,因此我将承担重复这个问题的风险。

最初的问题是“退出命令行程序的最佳方法是什么”。最好的方法显然来自return的{​​{1}},但如果我想退出像Main()或计时器这样的事件处理程序呢?

唯一的方法是从Main()中“远离”退出,就像在事件处理程序中一样,Console.CancelKeyPress方法?它可能不安全,因为Environment.Exit()无法清理。

示例代码:

Environment.Exit()

1 个答案:

答案 0 :(得分:1)

提供您的程序是单线程的,您可以抛出自定义异常,并且比Main()方法中没有任何声音。这为您提供了大量机会来执行任何清理(例如在finally块中)以实现优雅退出。像这样:

public class ExitProgramException : Exception { }

public void SomeNestedStuff()
{
    ...
    if (...) throw new ExitProgramException();
    ...
}

public void Main()
{
    try 
    {
        ...
        SomeNestedStuff();
        ...
    }
    catch (ExitProgramException)
    {
        Console.WriteLine("Bye!");
    }
}

但是,如果您的程序是多线程的,那么您将需要实现一些更复杂的优雅退出机制,具体取决于您的业务逻辑的具体情况。