4

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

该文件将在 Abort 调用后关闭。

4

3 回答 3

10

明显的问题是放弃事务的风险,这可能导致阻塞一段不确定的时间(或直到超时)。但是你可以摆脱各种混乱——不可恢复的Monitor锁、信号量等、内存泄漏等。

简而言之:尽量避免必须中止线程,除非您确切知道它当时在做什么。你知道它在做什么的唯一方法是它是否已经在一个已知的“安全点”(用你的术语)——所以你最好抛出一个异常或其他东西,让它以一种有管理的方式自我提升.

于 2010-02-01T21:02:09.103 回答
8

最佳实践:仅在您终止进程时中止线程。

于 2010-02-01T21:50:46.000 回答
0

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

MSDN 页面

于 2011-08-13T21:02:14.407 回答