我需要每 20 秒做一些后台工作(它不必正好是 20000 毫秒,我可以允许延迟)。我正在使用执行该功能的 Backgroundworker,然后使用 Timer 再等待 20 秒:
private readonly BackgroundWorker Worker = new BackgroundWorker();
volatile bool keepWorkerRunning;
Worker.DoWork += Worker_DoWork;
private void Worker_DoWork(object sender, DoWorkEventArgs e)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 20000;
aTimer.Enabled = true;
keepWorkerRunning = true;
while (keepWorkerRunning) ;
aTimer.Enabled = false;
}
该工作人员在软件运行期间一直处于活动状态。
问题是它占用了大部分 CPU。我注意到我的软件一直在使用大约 70% 的 CPU,而只是停用 Backgroundworker,CPU 使用率下降到 0.5%。
如何在不使 CPU 过载的情况下完成相同的工作?