3

我正在尝试获取 .NET 线程状态。
为此,我检查了ProcessThread.ThreadState财产。
但是,当我Thread.Sleep在该线程上使用并检查它的状态时Process Explorer- 我看到它处于“等待:延迟执行”,而我的 ThreadState 仍然是“运行”。
怎么可能?

4

1 回答 1

1

该类Process在首次访问时缓存属性,因此您可能需要调用该Refresh方法来获取更新的ThreadState. 似乎ProcessThread对象(来自ProcessThreads属性)没有附加到 parent Process,并且它包含的值在Refresh被调用时没有更新。您将需要Process再次检查该对象。

就像是:

Process p = Process.GetProcessByName("MyProcess);

while(true)
{
  p.Refresh();
  Console.WriteLine(p.ProcessThreads[0].ThreadState);
  Thread.Sleep(1000);
}
于 2013-01-02T16:32:41.117 回答