在开发工作中,经常会使用While循环来保证某个任务多次或始终在执行。同时也可以看到使用了While循环后Cpu消耗过高,这是因为操作系统的Cpu竞争策略引起的,而解决Cpu消耗过高的方法就是在While循环里加上Thread.Sleep(1);使当前线程休息一毫秒。即可解决该问题。
循环体异常导致循环中断该如何进行处理呢?
在程序执行过程中,通常会受到一些不可抗力因素导致异常,除了try,catch,finally以外,在while循环或者线程方法中通常使用ContinueWith方法。如下所示:
private void Test()
{
Task.Run(() =>
{
while(true)
{
Thread.Sleep(1);
//任务处理方法
}
}).ContinueWite(task =>
{
//处理异常
//继续启动Test方法
Test();
},TaskContimuationOptions.OnlyOnFaulted);//只有在发生故障时
}
ContinueWith方法就很好的解决了任务终止了的问题。如有其他办法欢迎朋友们分享!