线程中止状态问题

时间:2011-03-16 02:18:14

标签: .net multithreading .net-4.0

我有一个库来管理在.NET 3.5上构建的线程。当我尝试将其升级到.NET 4.0时,根据Thread.Abort方法,某些单元测试失败了。

简要介绍这些单元测试,跟踪线程状态从创建到停止。当线程被中止时,这些单元测试跟踪Running - >中的状态。 AbortRequested - >中止 - >停止。在使用VS2008或VS2010的.NET 3.5上,序列完全相同。直到我在VS2010上将其升级到.NET 4.0,单元测试失败。结果是线程保持在Aborted状态。

我已经检查了MSDN有关Thread.Abort的内容,这里是“在一个线程上调用Abort之后,线程的状态包括AbortRequested。在线程因成功调用而终止后要中止,线程的状态将更改为已停止。

有没有人有同样的问题? .NET 4.0线程行为是否正确?如果线程保持中止,它是否有任何影响?

1 个答案:

答案 0 :(得分:2)

我责备。继续并假设它是一个bug修复。让状态回到Stopped没有多大意义。

有一份旧的反馈报告about it here。他们承认.NET 2.0中的行为与记录的行为不匹配,但解决问题为时已晚。虽然已关闭,但我强烈怀疑他们将其修复为4.0。具有讽刺意味的是,看起来已记录的行为已在MSDN Library中更新,现在再次与实际行为不匹配。