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