【发布时间】:2012-06-13 07:27:14
【问题描述】:
我在 C# 中使用了一个线程,我将 IsBackground 属性设置为 true。线程在循环中运行一些代码,直到应用程序关闭。当应用程序关闭时,线程也停止执行(因为我设置了 IsBackground = true)。
应用程序如何杀死线程?似乎它不会通过调用 abort 来做到这一点,因为我没有得到 ThreadAbortException。它发生在幕后吗?我想在循环的 finally 块中做一些回滚。
我知道我可以自己在线程上调用 abort,但我想知道应用程序如何关闭我的后台线程,以及我是否可以从线程内部对其做出反应。我知道我可以订阅 Application.ApplicationExit 事件,但我在服务和 winform 中都运行此代码,我更喜欢在循环中捕获异常,以便能够在 finally 语句中回滚。
【问题讨论】:
-
您可以将其设为前台线程,并创建一个手动关闭线程的“全局”应用程序关闭场景。
-
你看过AppDomain.ProcessExit事件吗?
-
所以你们都说它发生在幕后,除了创建这些自定义解决方案之外,我无法对它做出反应?
标签: c# multithreading threadabortexception isbackground