我需要开发一个代理Windows服务,该服务将始终仅监视当前安装的计算机中的资源。监视的资源可能是处理器运行状况,SNMP陷阱,SQL Server运行状况。
我发现可以使用WMI或Perfmon在.NET中以编程方式实现此目的。
我不确定使用哪一种。我正在寻找利弊,在哪种情况下我们需要选择每种选择。
通常,如果“执行”中有可用的计数器,我将从此处开始,但是您至少会同时使用“执行”和WMI。举个例子:
如果要监视计算机上使用的总内存百分比,则可以使用Perfmon计数器“ Memory,Available Kbytes”。我还将通过以下几行使用WMI来获取计算机上的总内存:
new ManagementObjectSearcher("root\\CIMV2", "select * from win32_computersystem")
然后将totalphysicalmemory属性存储到名为totalKBytes的变量中。
现在,每当我要计算使用的内存百分比时,我都会进行一次计算:
(1.0f - (counter.NextValue() / totalKBytes)) * 100.0f
结论是不要为在Perform或WMI之间做出决定而感到困惑。您将至少需要它们。一旦真正开始监视,您可能还会发现自己正在从注册表中读取,运行自定义脚本,读取文件系统等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句