Thread.IsAlive和Thread.ThreadState == ThreadState.Running

Vic*_*jee 11 c# multithreading thread-state

我用来检查线程的状态if(Thread.IsAlive).表单正在此线程中运行.在执行期间,即使表单保持打开,对Thread.IsAlive的调用似乎也在评估为false.我想要用同样的检查if(Thread.ThreadState==ThreadState.Running).这是正确的方法吗?如果没有,可能的工作是什么?

Whi*_*eep 16

msdn Thread.IsAlive属性如果此线程已启动且未正常终止或中止,则为true;否则为false.否则,错误.

msdn Thread.ThreadState

  • 正在运行
    该线程已启动,未被阻止,并且没有挂起的ThreadAbortException.
  • StopRequested
  • SuspendRequested
  • 背景
  • 未开始
  • WaitSleepJoin
  • 暂停
  • AbortRequested

我想现在很明显Running不一样了IsAlive

  • 当你开始一个线程时,IsAlive非常有用.if(!thread.IsAlive)thread.Start(); 查看线程是否正在运行并不是一种安全的方法,因为NOT STARTED和STARTED之间有许多状态不等于RUNNING.IsAlive真的只是告诉你不要再试一次. (4认同)
  • 这是一种定期检查以确保线程没有退出的安全方法吗? (3认同)