我有一个分析文件并对数据库进行事务调用的线程,每个事务都有一个审计条目作为其事务的一部分。调用Thread.Abort()来停止处理文件有什么大不了的错吗?而不是散布各处丑陋的安全点?
中止呼叫后文件将被关闭。
答案 0 :(得分:10)
显而易见的问题是放弃交易的风险,这可能导致无限期(或直到超时)的阻塞。但是你可以让所有排序脱离混乱 - 不可恢复的Monitor
锁,信号量等,内存泄漏等。
简而言之:尽可能努力避免中断线程,除非您知道完全当时正在做什么。而你能够知道它正在做什么的唯一方法就是它已经处于一个已知的“安全点”(使用你的术语) - 所以你也可以抛出异常或其他东西让它以管理的方式自我提升
答案 1 :(得分:8)
最佳做法:仅在拆除过程时中止线程。
答案 2 :(得分:0)
尝试Thread.Interrupt()强制线程退出等待状态。