线程在.NET中止

时间:2010-02-01 20:57:24

标签: c# .net multithreading abort

我有一个分析文件并对数据库进行事务调用的线程,每个事务都有一个审计条目作为其事务的一部分。调用Thread.Abort()来停止处理文件有什么大不了的错吗?而不是散布各处丑陋的安全点?

中止呼叫后文件将被关闭。

3 个答案:

答案 0 :(得分:10)

显而易见的问题是放弃交易的风险,这可能导致无限期(或直到超时)的阻塞。但是你可以让所有排序脱离混乱 - 不可恢复的Monitor锁,信号量等,内存泄漏等。

简而言之:尽可能努力避免中断线程,除非您知道完全当时正在做什么。而你能够知道它正在做什么的唯一方法就是它已经处于一个已知的“安全点”(使用你的术语) - 所以你也可以抛出异常或其他东西让它以管理的方式自我提升

答案 1 :(得分:8)

最佳做法:仅在拆除过程时中止线程。

答案 2 :(得分:0)

尝试Thread.Interrupt()强制线程退出等待状态。

MSDN page