我在C#中編寫了一個代碼,它使用WMI(System.Management)將邏輯驅動器映射到其物理磁盤。代碼工作完美,但像地獄一樣慢。 在我的機器(Windows 7 x64,雙核3 GB RAM)中,它至少運行1秒。對我來說,1秒對我來說太慢了,即使0.1也足夠完成了。 我不止一次覺得這個功能可以在0.1秒內完成。WMI性能差
有沒有可以幫助的任何Win32API功能?
其他建議?
這是我到目前爲止的代碼:
List<Dictionary<string, string>> results = new List<Dictionary<string, string>>();
using (ManagementClass diskDriveClass = new ManagementClass(@"Win32_Diskdrive"))
{
using (ManagementObjectCollection diskDrives = diskDriveClass.GetInstances())
{
foreach (ManagementObject diskDrive in diskDrives)
{
string deviceId = (string)diskDrive["DeviceId"];
Dictionary<string, string> logicalDisksResults = new Dictionary<string, string>();
Trace.WriteLine(deviceId);
using (ManagementObjectCollection relatedPartitions = diskDrive.GetRelated("Win32_DiskPartition"))
{
foreach (ManagementObject relatedPartition in relatedPartitions)
{
Trace.WriteLine("-\t" + relatedPartition["Name"]);
using (ManagementObjectCollection relatedLogicalDisks = relatedPartition.GetRelated("Win32_LogicalDisk"))
{
foreach (ManagementBaseObject relatedLogicalDisk in
relatedLogicalDisks)
{
Trace.WriteLine("\t-\t" + relatedLogicalDisk["Name"] + " " + relatedLogicalDisk["FileSystem"]);
logicalDisksResults.Add((string)relatedLogicalDisk["Name"], (string)relatedLogicalDisk["FileSystem"]);
}
}
}
}
results.Add(logicalDisksResults);
}
}
}
請問您可以發佈您的選項定義嗎? – 2009-11-22 22:50:47
不好意思,我修正了上面的代碼。我最初使用沒有選項,我只是試圖提高性能,但這並沒有幫助。 – DxCK 2009-11-23 05:20:53