【发布时间】:2013-03-25 00:25:45
【问题描述】:
我在我的 c# 应用程序 backgroundworker 和 dowork 无限循环中有,但 backgroundworker 的 cpu 使用率非常高 (50%)。如何限制backgroundworker的cpu使用?
代码:
private void ScanWorker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
while (!worker.CancellationPending)
{
Process[] Procesy = Process.GetProcesses();
foreach (Process Proces in Procesy)
{
List<BlaclistedProcess> blacklist = (from p in CurrentBlacklist.Processes
where p.ProcessName == Proces.ProcessName
select p).ToList<BlaclistedProcess>();
if (blacklist.Count == 1)
{
Proces.Kill();
}
}
}
}
【问题讨论】:
-
你能显示导致问题的代码吗?
-
我建议仅根据计时器执行此操作。可能每秒一次或两次......
-
不要轮询,当process starts 时,让 Windows 告诉你。请牢记这种方法的谬误。如果你有一个黑名单,那么就从一开始就阻止这些程序启动。
标签: c# multithreading backgroundworker cpu cpu-usage