2010-12-01 115 views
-1

我们正面临VB.NET监听器的一个问题,它在运行服务器的机器中利用高CPU(50%到70%)。听众正在使用线程概念,并且我们还使用FileSystemWatcher类来保持监视文件重命名指向一个公共位置。两者都是控制台应用程序和预定作业全天运行。你能帮我解决如何通过这个FileSystemWatcher类来控制CPU利用率吗?CPU利用率高 - VB.NET

+1

你有没有运行一个探查器来找出时间到了哪里? – 2010-12-01 07:21:21

回答

1

这可能都取决于您正在运行的代码。

例如,如果您有一个间隔为10毫秒的计时器,但每隔2分钟工作一次,并且在每个计时器间隔上进行很多检查,则需要大量的CPU才能不做任何事情。

如果您正在使用多个线程,并且一个正在循环等待第二个释放锁(Monitor.TryEnter()),那么这可能会占用额外的CPU。您可以通过将等待线程放入Monitor.Wait(),然后在忙线程完成时执行Monitor.Pulse()来避免这种情况。

除了上面非常一般的建议,如果您发布代码或配置文件结果的关键部分,那么我们可能会提供更多帮助。

如果你正在寻找一个分析器,我们使用RedGates ANTS Profiler(成本,但免费试用),它给出了很好的结果,我没有使用任何其他比较(我没有任何关联的RedGate)所以其他人可能会更好。

希望这可以帮到一些人。