J'ai écrit un code en C# qui mappe les disques logiques à leurs disques physiques, en utilisant WMI (System.Management). Le code fonctionne parfaitement, mais lent comme l'enfer. Dans ma machine (Windows 7 x64, Dual-Core avec 3 Go de RAM), il fonctionne au moins 1 seconde. 1 seconde est trop lent pour moi, même 0,1 est plus que suffisant pour accomplir. Je suis plus que douloureux que cette fonctionnalité peut être fait en moins de 0,1 seconde.WMI Mauvaise performance
Y at-il des fonctions Win32API qui peuvent aider?
D'autres suggestions?
ceci est mon code à ce jour:
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);
}
}
}
pouvez-vous s'il vous plaît poster votre définition des options? –
Désolé, mon mauvais, j'ai corrigé le code ci-dessus. Je n'utilise pas d'options à l'origine, j'ai juste essayé d'augmenter les performances, mais cela n'aide pas. – DxCK