【发布时间】:2012-05-02 10:40:55
【问题描述】:
我正在使用 WCF 服务库在 LAN 上开发一个小型远程任务管理器应用程序 [服务器/客户端]。
我需要知道哪种方式获取处理器信息更快:
- 从
System.Diagnostics获取进程信息? - 从
WMI获取进程信息?
我现在使用第一个选项,但如果应用程序是 x86,并且进程是 x64,那么我无法访问 Process.MainModule,所以它迫使我创建两个版本的应用程序以使其工作在任何 PC、x86 版本和 x64 上。
那么,如果我使用 WMI,我会面临同样的问题吗?
public void GetProcesses()
{
foreach (Process p in Process.GetProcesses())
{
try
{
InfoProcess process = new InfoProcess(p.Id, p.MainModule.ModuleName, p.MainModule.FileVersionInfo.FileDescription, p.WorkingSet / 1024);
PrintProcess(process);
}
catch
{ }
}
}
public class InfoProcess
{
public int Id;
public string Name;
public string Description;
public int WorkingSet;
public InfoProcess(int Id, string Name, string Desc, int WorkingSet)
{
this.Id = Id;
this.Name = Name;
this.Description = Desc;
this.WorkingSet = WorkingSet;
}
}
如果 WMI 更好,我需要一些关于属性名称的帮助:
Process.WorkingSetProcess.MainModule.FileVersionInfo.FileDescription
【问题讨论】:
-
两者都试一下,测试一下各自的性能。