gpt4 book ai didi

c# - 当应用程序关闭时,我可以检测到后台线程何时被应用程序杀死吗?

转载 作者:可可西里 更新时间:2023-11-01 08:27:37 26 4
gpt4 key购买 nike

我在 C# 中使用一个线程,我已将 IsBackground 属性设置为 true。线程在循环中运行一些代码,直到应用程序关闭。当应用程序关闭时,线程也停止执行(因为我设置了 IsBackground = true)。

应用程序如何终止线程?它似乎不是通过调用中止来完成的,因为我没有得到 ThreadAbortException。它发生在幕后吗?我想在循环的 finally block 中做一些回滚。

我知道我可以自己在线程上调用 abort,但我想知道应用程序如何关闭我的后台线程,以及我是否可以从线程内部对此使用react。我知道我可以订阅 Application.ApplicationExit 事件,但我在服务和 winform 中都运行这段代码,我更喜欢在循环内捕获异常,这样我就可以在 finally 语句中回滚。

最佳答案

It seems that it doesn't do it by calling abort because I don't get a ThreadAbortException

确实如此,CLR 有两种方法来中止线程。通过 Thread.Abort() 调用的“正常”方式,线程可以看到 ThreadAbortException。但也有一个粗鲁的中止,工作方式相同。但是减去 TAE 并且没有 finally block 执行。你无法观察到它。

关于c# - 当应用程序关闭时,我可以检测到后台线程何时被应用程序杀死吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com