编写无限循环很简单:
while(true){
//add whatever break condition here
}
Run Code Online (Sandbox Code Playgroud)
但这会破坏CPU的性能.此执行线程将尽可能多地从CPU的电源中获取.
降低对CPU影响的最佳方法是什么?添加一些Thread.Sleep(n)应该可以解决问题,但为Sleep()方法设置高超时值可能表示对操作系统的应用程序无响应.
假设我需要在控制台应用程序中每分钟执行一次任务.我需要继续Main()在"无限循环"中运行,而计时器将触发将完成工作的事件.我想保持Main()对CPU的最小影响.
你有什么方法可以建议.Sleep()可以,但正如我已经提到的,这可能表明操作系统没有响应.
后期编辑:
我想更好地解释一下我在寻找什么:
我需要一个控制台应用程序不是Windows服务.控制台应用程序可以使用Compact Framework模拟Windows Mobile 6.x系统上的Windows服务.
只要Windows Mobile设备运行,我需要一种方法让应用程序保持活动状态.
我们都知道控制台应用程序运行只要其静态Main()函数运行,所以我需要一种方法来阻止Main()函数退出.
在特殊情况下(例如:更新应用程序),我需要请求应用程序停止,因此我需要无限循环并测试某些退出条件.例如,这就是为什么Console.ReadLine()我没用.没有退出条件检查.
关于上面,我仍然希望Main()函数尽可能地对资源友好.让我们确定检查退出条件的函数的指纹.