【发布时间】:2008-09-06 00:59:14
【问题描述】:
在我的 C# 程序中,我有一个表示正在运行的测试的线程,可以通过单击标有“中断执行”的按钮来中止它。为了使线程(以及测试)以优雅的方式终止(并预先完成一些重要的工作),此按钮仅在某些明确定义的时刻启用,其中我捕捉到ThreadAbortedException,执行Thread.ResetAbort()并漂亮地死去(即线程)。
问题在于,在可以中止的时间窗口内,一旦启动,有些任务需要从头到尾完成,因此,我担心 TAE。锁并没有为此提供解决方案,虽然 finally 块可以,但我认为以以下方式包装重要代码并不优雅:
try {
} finally {
// vital code
}
但是,我没有找到任何其他解决方案。
这是另一种将ThreadAbortException的干扰延迟到区块结束的方法吗?
【问题讨论】:
标签: .net multithreading