【问题标题】:Threading aborted state problem线程中止状态问题
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多