我在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