我正在使用WCF服务lib在LAN上开发一个小型远程任务管理器应用程序[server / client]。
我需要知道哪种方式更快获得处理器信息:
我现在正在使用第一个选项,但是如果应用程序是x86,并且进程是x64,那么我无法访问Process.MainModule
,所以它迫使我创建我的应用程序的两个版本来获取它适用于任何PC,x86版本和x64。如果我使用WMI,我会遇到同样的问题吗?
public void GetProcesses()
{
foreach (Process p in Process.GetProcesses())
{
try
{
InfoPrcoess process = new InfoPrcoess(p.Id, p.MainModule.ModuleName, p.MainModule.FileVersionInfo.FileDescription, p.WorkingSet / 1024);
PrintProcess(process);
}
catch
{ }
}
}
public class InfoPrcoess
{
public int Id;
public string Name;
public string Description;
public int WorkingSet;
public InfoPrcoess(int Id, string Name, string Desc, int WorkingSet)
{
this.Id = Id;
this.Name = Name;
this.Description = Desc;
this.WorkingSet = WorkingSet;
}
}
如果WMI更好,我需要一些帮助我的属性名称:Process.WorkingSet
和Process.MainModule.FileVersionInfo.FileDescription
答案 0 :(得分:0)
我希望WMI会变慢。您可以使用一些技巧来加速WMI,但总的来说,性能通常很差。
在您的情况下,我只需构建针对AnyCPU的应用。然后你有一个应用程序,在32位操作系统下运行为x86,在64位操作系统下运行为x64。这样你就可以完全避开WMI。