我们正面临着VB.NET监听器的问题,它在运行它的服务器机器中使用高CPU(50%到70%)。监听器正在使用线程概念,我们还使用FileSystemWatcher
类来监视指向一个公共位置的文件重命名。两者都是控制台应用程序和全天运行的预定作业。你能帮我解决一下这个FileSystemWatcher
类控制CPU利用率的问题吗?
答案 0 :(得分:1)
这完全取决于您正在运行的代码。
例如,如果你的计时器间隔为10毫秒,但每2分钟只能工作一次,那么你会做很多检查,这将需要大量的CPU来做任何事情。
如果您正在使用多个线程并且正在循环等待第二个释放锁(Monitor.TryEnter()),那么这可能会占用额外的CPU。您可以通过将等待线程放入Monitor.Wait()然后在忙线程完成时执行Monitor.Pulse()来避免这种情况。
除了上面的一般建议,如果您发布代码或个人资料结果的关键部分,那么我们可以提供更多帮助。
如果您正在寻找一个探查器我们使用RedGates ANTS Profiler(费用但免费试用)并且它给出了很好的结果,我没有使用任何其他比较(我与RedGate没有任何关联)所以其他人可能会更好。
希望其中一些有用。