2011-03-16 77 views
0

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

简而言之,这些单元测试将从创建到停止跟踪线程状态。当线程正在中止时,这些单元测试会跟踪状态,从运行 - >中止请求 - >中止 - >已停止。使用VS2008或VS2010,该序列在.NET 3.5上完全相同。直到我将其升级到VS2010上的.NET 4.0之后,单元测试失败。结果是线程保持中止状态。

我已经检查MSDN有关Thread.Abort的,这里是的话,“中止后,在一个线程调用线程的状态包括AbortRequested后的线程终止作为一个成功的调用的结果中止,线程的状态更改为已停止。

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

回答

2

我重播。继续,并假设它是一个错误修复。让状态回到停止状态没有多大意义。

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