web-dev-qa-db-ja.com

Thread.IsAliveおよびThread.ThreadState == ThreadState.Running

if(Thread.IsAlive)を使用してスレッドの状態をチェックしています。このスレッドでフォームが実行されています。実行中にフォームが開いたままであっても、Thread.IsAliveの呼び出しがfalseと評価されているように見えることがあります。同じチェックをif(Thread.ThreadState==ThreadState.Running)で実行することを考えました。それは正しい方法ですか?そうでない場合、可能な回避策は何ですか?

11

msdn Thread.IsAliveプロパティこのスレッドが開始され、正常に終了または中止されていない場合はtrue。それ以外の場合はfalse。

msdn Thread.ThreadState

  • ランニング
    スレッドは開始され、ブロックされておらず、保留中のThreadAbortExceptionはありません。
  • StopRequested
  • SuspendRequested
  • バックグラウンド
  • 開始されていません
  • WaitSleepJoin
  • 一時停止
  • AbortRequested

RunningIsAliveと同じでないことは明らかだと思います

16
WhileTrueSleep