使用System.Threading使用50%CPU的简单.exe

Ada*_*dam 3 .net c# desktop-application

我有一个非常简单的可执行文件,大约每3秒检查一个特定的文件夹,看看那里是否有文件.如果它找到一个文件,它会做一些事情,然后返回每3秒检查一次文件夹.

有人报告说这个可执行文件有时占用了50%的CPU,有没有关于如何正确执行此操作的建议.下面是我如何做这个的示例代码.

// Check our folder every x seconds
Timer = new System.Threading.Timer(TimerCallback, null, 0, Global.SecondsToCheckPrintFolder * 1000);
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 9

你应该用一个FileSystemWatcher.

要回答你的问题,你的主线程可能正在运行while(true) { },这将永远杀死CPU.

要使主线程永远等待,你应该调用Application.Run().
你也可以打电话Thread.Sleep(-1).