我是WMI
和System.Diagnostics
等新手。
我需要写一些东西(一个服务?)来监视CPU使用率%的几个进程。
当我在任务管理器中时,CPU列是我想要的那个(即百分比)。
我需要能够在远程计算机上运行它,并让它检查CPU使用率 每隔一秒左右。当使用率超过30%时,我需要自动重启违规服务。
我已经阅读了所有(大多数)相关问题,我认为PerformanceCounter可能是我需要使用的,但我不确定我是否需要为每个进程中的一个,以及如何定位过程(它必须是基于名称的,而不是基于PID的)。
任何人都可以提供建议 摘要
由于
答案 0 :(得分:1)
您可以考虑查看我之前的一个旧自由软件项目的来源:The SETI@Home Service。它实现了一个Windows服务,如果CPU使用率超过certian值,它会暂停其客户端进程(SETI @ Home客户端)。它甚至添加了其他几个性感的曲折,比如任何时候暂停其他进程启动(例如:你最喜欢的游戏),崩溃重启,内置网络服务器等等。
主要的缺点是来源是Ada,但是大多数人发现Ada更容易阅读他们不熟悉的大多数其他语言。
答案 1 :(得分:0)
我终于通过编写PerformanceCounter和Process的包装来解决我自己的问题。 我有一个名为ProcessMonitor的类,它有一个PerformanceCounter和一个Process作为属性。我创建了另一个名为ProcessMonitorList的类,它只包含List。然后我的主要Commandline应用程序有一段时间(true),它查询具有提供的名称的所有进程,并在每秒吐出它们的CPU使用率。如果使用率超过阈值,则该过程将被终止,并且可选择将电子邮件发送到已配置的电子邮件地址。