C#Thread的状态和“Sleep”

时间:2013-01-02 08:58:21

标签: c# thread-state

我正在尝试获得.NET线程状态 为此,我检查ProcessThread.ThreadState属性 但是当我在该线程上使用Thread.Sleep并使用Process Explorer检查其状态时 - 我看到它在“等待:延迟执行”中,而我的ThreadState仍在“运行”。
怎么会这样?

1 个答案:

答案 0 :(得分:1)

Process类在第一次访问时缓存属性,因此您可能需要调用Refresh方法来获取更新的ThreadState。似乎ProcessThread对象(来自ProcessThreads属性)未附加到父Process,并且当调用Refresh时,它包含的值不会更新。您需要再次浏览Process对象。

类似的东西:

Process p = Process.GetProcessByName("MyProcess);

while(true)
{
  p.Refresh();
  Console.WriteLine(p.ProcessThreads[0].ThreadState);
  Thread.Sleep(1000);
}