Ниже приведен код и проблемная строка.
Когда я наводю указатель мыши на src.EnergyServiceLevel
, это показывает, что оно нулевое.Как это может быть, если я проверяю на нулевое значение в предыдущей строке?
Я предполагаю, что, возможно, существуют потоки, которые создают проблему, поэтому я добавил блокировку, но это не помогло.
public static ServiceLevelsGroup SafeClone(this ServiceLevelsGroup src) {
ServiceLevelsGroup res = null;
lock (_locker) {
if (src != null) {
res = new ServiceLevelsGroup();
if (src.EnergyServiceLevel != null) {
res.EnergyServiceLevel = new ServiceLevelInfo { ServiceGrade = src.EnergyServiceLevel.ServiceGrade };
if (src.EnergyServiceLevel.Reason != null)
res.EnergyServiceLevel.Reason = src.EnergyServiceLevel.Reason;
}
}
}
return res;
}
Исключение возникает в строке res.EnergyServiceLevel = ...
в приведенном выше коде.
Вот снимок экрана исключения, возникающего в режиме отладки: