【发布时间】:2011-03-16 02:18:13
【问题描述】:
我有一个库来管理基于 .NET 3.5 构建的线程。当我尝试将其升级到 .NET 4.0 时,一些单元测试根据 Thread.Abort 方法失败。
简而言之,这些单元测试是从创建到停止跟踪线程状态。当线程被中止时,这些单元测试会从 Running -> AbortRequested -> Aborted -> Stopped 跟踪状态。该序列在使用 VS2008 或 VS2010 的 .NET 3.5 上完全相同。在我将它升级到 VS2010 上的 .NET 4.0 之前,单元测试会失败。结果是线程保持在 Aborted 状态。
我查看了 MSDN 关于 Thread.Abort 的信息,这里是这样的话,“在线程上调用 Abort 后,线程的状态包括 AbortRequested。在线程因成功调用而终止后到 Abort,线程的状态变为 Stopped。"
有人遇到同样的问题吗? .NET 4.0 线程行为是否正确?如果线程一直处于 Aborted 状态,有什么影响吗?
【问题讨论】:
标签: .net multithreading .net-4.0