在控制台应用程序中处理 Ctrl+C 时,有没有办法让所有线程的所有finally块都运行

问题描述 投票:0回答:1

这可能是重复的,但我似乎找不到我想要的确切解决方案。

我有一个控制台应用程序,我希望能够通过

ctrl+c
退出。在我的代码库/外部库中,有些类型绝对需要调用其
Dispose/Close()
方法来进行清理。

我显然可以做到:

Console.CancelKeyPress
... obj.Close()

我的

using
块之前的任何地方。

有没有更好的方法 -

CancelKeyPress
的一个事件处理程序以某种方式强制
finally
阻止所有线程运行?

c# console-application terminate finally
1个回答
0
投票

默认的应用程序关闭代码(Environment.Exit()、Application.Shutdown)将执行您的finally 块。唯一明确不会的就是Environment.FailFast()。除非发生灾难性的事情(通常在本机代码中),否则 .net 不会调用它。

© www.soinside.com 2019 - 2024. All rights reserved.