gpt4 book ai didi

.net - 有没有办法确保在 .NET 线程中执行整个代码块?

转载 作者:行者123 更新时间:2023-12-02 07:57:19 25 4
gpt4 key购买 nike

在我的 C# 程序中,我有一个表示正在运行的测试的线程,可以通过单击标有“中断执行”的按钮来中止它。为了使线程(以及因此测试)以优雅的方式终止(并提前完成一些重要工作),此按钮仅在某些明确定义的时刻启用,其中我捕捉到 ThreadAbortedException , 做 Thread.ResetAbort()并美丽地死去(即线程)。

问题是,在可以中止的时间窗口内,一旦启动,有些任务需要从头到尾完成,因此,我担心 TAE。锁并没有为此提供解决方案,虽然 finally block 可以,但我认为以以下方式包装重要代码并不优雅:

try {
} finally {
// vital code
}

但是,我没有找到任何其他解决方案。

这是另一种延迟 ThreadAbortException的干扰的方法吗?直到区 block 结束?

最佳答案

将生成 ThreadAbortException 的情况可能很复杂。更好的选择可能是询问您为什么要使用 ThreadAbortExceptions。

更好的模式是简单地使用一个标志来向正在运行的线程指示它应该中止,然后在它工作时定期测试标志。如果已设置,您可以根据需要在此时抛出异常。

使用这种模式,您可以完全控制线程何时执行中止操作,而不必担心关键操作会被中断。

关于.net - 有没有办法确保在 .NET 线程中执行整个代码块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144/

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