Запрос WMI занимает слишком много времени в C# при запросе времени сна и времени отключения дисплея - PullRequest
0 голосов
/ 02 апреля 2020

WMI Query занимает слишком много времени для получения требуемых значений времени ожидания и времени отключения дисплея. Это правильный путь? Пожалуйста, помогите мне сократить время. Иногда это занимает около 5-7 минут.

  string CIMKey = @"root\cimv2\power";
  string Query = "SELECT * FROM Win32_PowerPlan WHERE IsActive
     = True";

  ManagementObjectSearcher Finder = new
     ManagementObjectSearcher(CIMKey, Query);
  ManagementObject ActivePlan = Finder.Get().Cast
     <ManagementObject>().First();

  string PlanID = ((string)ActivePlan.GetPropertyValue
     ("InstanceId")).Split('\\')[1];

  ManagementObject SleepTime = ActivePlan.GetRelated
        ("Win32_PowerSettingDataIndex").Cast
        <ManagementObject>()
     .Where(x => (string)x.GetPropertyValue("InstanceId") ==
        $@"Microsoft:PowerSettingDataIndex\{PlanID}\AC\
        {{29f6c1db-86da-48c5-9fdb-f2b67b1f44da}}"
     ).First();

  uint SleepValue = (uint)SleepTime.GetPropertyValue
     ("SettingIndexValue");

  ManagementObject DisplayTime = ActivePlan.GetRelated
        ("Win32_PowerSettingDataIndex").Cast
        <ManagementObject>()
     .Where(x => (string)x.GetPropertyValue("InstanceId") ==
        $@"Microsoft:PowerSettingDataIndex\{PlanID}\AC\
        {{3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e}}"
     ).First();

  uint SleepValue = (uint)DisplayTime.GetPropertyValue
     ("SettingIndexValue");
...