我正在使用WCF服務庫在局域網上開發一個小型遠程任務管理器應用程序[服務器/客戶端]。運行進程WMI或System.Diagnostics.Process更快嗎?
我需要知道哪條路是更快獲得處理器的信息:
- 正從System.Diagnostics程序過程中的信息?
- 從WMI獲取進程信息?
我使用的第一選擇現在,但如果應用程序是86,而這個過程是64的話,我無法訪問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
只需嘗試兩個並測試每個的性能。 – Oded