【问题标题】:Confused in the two differente MSDN documentation (ThreadWaitState)混淆了两个不同的 MSDN 文档 (ThreadWaitState)
【发布时间】:2021-11-21 07:09:30
【问题描述】:

当发生新事件时,我的主线程会在屏幕上绘制许多行 (700-1500)。 (~10..100ms) 主线程绘制但有时会挂起(很长一段时间(30 秒分钟),我真的不明白为什么。

ThreadWaitState 为 2
ThreadWaitReason 为 27(有时为 0、31)

我对 MSDN 文档感到困惑,ThreadState 枚举有两个不同的页面。 非常不同的枚举

哪个适合?

【问题讨论】:

  • 看看ThreadState enum:备注:重要有两个线程状态枚举,System.Diagnostics.ThreadState和System.Threading.ThreadState。线程状态枚举仅在少数调试场景中有用。您的代码不应该使用线程状态来同步线程的活动。
  • this 适合 - 2 - 是 StateRunningKWAIT_REASON 仅在线程处于StateWait (5) 状态时才有意义。
  • 您已链接到 .NET 文档,但使用了 c++mfc 标记。这是故意的吗?
  • 附加信息,ThreadWaitState 和 ThreadWatReason 数字是性能监视器 (perfmon.exe) ThreadCounter 的结果
  • @IInspectable 不,我不想要 .NET 文档。微软现在很难找到没有 .NET 的任何文档。

标签: c++ winapi mfc


【解决方案1】:

ThreadState Enum:System.Diagnostics.ThreadState。指定线程的当前执行状态。

ThreadState Enum:System.Threading.ThreadState。指定线程的执行状态。 ThreadState 枚举为线程定义了一组所有可能的执行状态。

ThreadWaitReason Enum 的命名空间是System.Diagnostics。仅当 ThreadState 为 Wait 时,WaitReason 属性才有效。 ThreadState 是 System.Diagnostics.ThreadState。

【讨论】:

  • 这是来自 MSDN 文档的复制和粘贴。仍然不适合我。结果在性能监视器 (perfmon.exe) 中观察,WaitingStates & Reason 被引用?示例 ThreadWaitState = 2。SystemDiagnostics 说 SuspendRequested,SystemThreading 说:正在运行。我还是一头雾水
猜你喜欢
  • 2011-11-09
  • 2021-07-27
  • 2011-08-06
  • 2021-10-26
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 2019-06-28
相关资源
最近更新 更多