这可能是重复的,但我似乎找不到我想要的确切解决方案。
我有一个控制台应用程序,我希望能够通过
ctrl+c
退出。在我的代码库/外部库中,有些类型绝对需要调用其 Dispose/Close()
方法来进行清理。
我显然可以做到:
Console.CancelKeyPress
... obj.Close()
我的
using
块之前的任何地方。
有没有更好的方法 -
CancelKeyPress
的一个事件处理程序以某种方式强制 finally
阻止所有线程运行?
默认的应用程序关闭代码(Environment.Exit()、Application.Shutdown)将执行您的finally 块。唯一明确不会的就是Environment.FailFast()。除非发生灾难性的事情(通常在本机代码中),否则 .net 不会调用它。