3

.NET スレッドの状態を取得しようとしています。
このために、ProcessThread.ThreadStateプロパティを確認します。
ただし、Thread.Sleepそのスレッドで使用してその状態を確認するとProcess Explorer、「待機: 実行の遅延」になっていることがわかりますが、ThreadState はまだ「実行中」です。
それはどうしてですか?

4

1 に答える 1

1

クラスは最初のアクセス時にプロパティをキャッシュするため、更新を取得するにProcessはメソッドを呼び出す必要があります。(プロパティからの)オブジェクトは親にアタッチされていないようであり、オブジェクトに含まれる値は、が呼び出されたときに更新されません。オブジェクトをもう一度確認する必要があります。RefreshThreadStateProcessThreadProcessThreadsProcessRefreshProcess

何かのようなもの:

Process p = Process.GetProcessByName("MyProcess);

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