Лучший отвечающий
Ссылка на объект не указывает на экземпляр объекта

Вопрос
-
иногда при выполнении следующего кода вызывается исключение с текстом "Ссылка на объект не указывает на экземпляр объекта"
System.Management.ManagementObjectSearcher man = new System.Management.ManagementObjectSearcher("SELECT LoadPercentage FROM Win32_Processor"); foreach (System.Management.ManagementObject obj in man.Get()) { Value_set = obj["LoadPercentage"].ToString(); }
почему так может происходить? и как этого избежать?!4 сентября 2017 г. 9:42
Ответы
-
"то есть если ничего не нашли, то и в цикл мы не должны заходить"
Не факт. Насколько я вижу, нигде не документировано, что должна вернуться именно пустая коллекция. Посмотрите в возвращаемом ManagementObject свойства Options, Properties и др. Может они помогут понять, что происходит.
Вообще, когда ошибка воспроизводится 1 раз из 300, это заставляет думать об аппаратной проблеме.
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 2 октября 2017 г. 8:58
5 сентября 2017 г. 7:50
Все ответы
-
"почему так может происходить?"
левый операнд операции "." или "[]" равен null
"как этого избежать?!"
выяснять с помощью отладчика какая переменная равна null, исправлять это (если возможно), добавлять проверку на null перед использованием переменных
- Предложено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 4 сентября 2017 г. 12:50
4 сентября 2017 г. 11:51 -
я понимаю, что иногда obj["LoadPercentage"] == null и поэтому возникает исключение, вопрос в том почему ИНОГДА? ~ 300 раз все выполняется отлично, а потом возникает ошибка, затем опять все хорошо. ведь я делаю запрос с поиском именно LoadPercentage, то есть если ничего не нашли, то и в цикл мы не должны заходить.
5 сентября 2017 г. 6:24 -
"то есть если ничего не нашли, то и в цикл мы не должны заходить"
Не факт. Насколько я вижу, нигде не документировано, что должна вернуться именно пустая коллекция. Посмотрите в возвращаемом ManagementObject свойства Options, Properties и др. Может они помогут понять, что происходит.
Вообще, когда ошибка воспроизводится 1 раз из 300, это заставляет думать об аппаратной проблеме.
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 2 октября 2017 г. 8:58
5 сентября 2017 г. 7:50