我有一个非常简单的可执行文件,每隔3秒检查一个特定的文件夹,看看是否有文件。如果它找到一个文件,它会做一些事情,然后每隔3秒返回一次检查文件夹。
有人报告说这个可执行文件有时占用了50%的CPU,有没有关于如何正确执行此操作的建议。下面是我如何做这个的示例代码。
// Check our folder every x seconds
Timer = new System.Threading.Timer(TimerCallback, null, 0, Global.SecondsToCheckPrintFolder * 1000);
答案 0 :(得分:9)
您应该使用FileSystemWatcher
。
要回答你的问题,你的主线程可能正在运行while(true) { }
,这将永远杀死CPU。
要使主线程永远等待,您应该致电Application.Run()
您也可以拨打Thread.Sleep(-1)
。
答案 1 :(得分:1)
这在线程池内执行,这意味着可以多次同时执行回调。为什么不使用简单的循环呢?
while(true)
{
if (File.Exists(@"someFile"))
{
// Do stuff
}
Thread.Sleep(3000);
}