立即终止Sleep的线程

在实际工作中,我们需要每隔几分钟从API取数。

while(isRunning)

{

  work();

  Thread.Sleep(5*60*1000);

}

如果设置isRunning=false,也需要等待几分钟才能终止。

如果调用Thread.Abort()会报异常。

解决方法,将一次Sleep 5分钟,改为分5*60次Sleep一秒钟。然后将isRunning=false即可立即终止线程。

while(isRunning)

{

  work();

  for(int i=0;i<5*60 && isRunning;i++)

  {

    Thread.Sleep(1000);

  }

}

原文地址:https://www.cnblogs.com/xbzhu/p/6944370.html