我尝试编辑此问题:What's the preferred way of exiting a command line program?
但我的编辑被拒绝了。我不被允许发表评论,因此我将承担重复这个问题的风险。
最初的问题是“退出命令行程序的最佳方法是什么”。最好的方法显然来自return
的{{1}},但如果我想退出像Main()
或计时器这样的事件处理程序呢?
唯一的方法是从Main()中“远离”退出,就像在事件处理程序中一样,Console.CancelKeyPress
方法?它可能不安全,因为Environment.Exit()
无法清理。
示例代码:
Environment.Exit()
答案 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!");
}
}
但是,如果您的程序是多线程的,那么您将需要实现一些更复杂的优雅退出机制,具体取决于您的业务逻辑的具体情况。