После запуска приложения WPF (.NET 3.5) на компьютере с Windows XP в течение более 12 часов происходит сбой приложения с двумя сообщениями об ошибках EventLog.
Первый - .NET Runtime версия 2.0.50727.3053 - неисправимая системная ошибка.
и второй EventType clr20r3, P1 knxclientconsole.exe, P2 1.0.0.0, P3 4e3961fd, P4 windowsbase, P5 3.0.0.0, P6 488f1338, P7 da, P8 1b, P9 fatalerror, P10 NIL.
Мое приложение WPF - это пользовательский интерфейс для внешнего модуля DLL, который я тоже собрал.
Этот внешний модуль является коммуникационным модулем, который связывается через сеть LAN
использование UDP-сокетов с внешним устройством.
После использования ILDASM для поиска места, где сгенерирована ошибка, я нашел в своем коде строку, где ошибка генерируется, но недостаточно близко.
public bool ON_Seg4
{
get
{
return _ON_Seg4;
}
set
{
if (_ON_Seg4 != value)
{
_ON_Seg4 = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("ON_Seg4"));
}
}
}
}
Исключение возникает в строке PropertyChanged (this, new PropertyChangedEventArgs ("ON_Seg4"));
Вы можете видеть, что исключение возникает в установщике свойства ON_Seg4.
Используя ILDASM с использованием параметра P8 (смещение IL), я обнаружил, что исключение возникает из смещения 1b:
// 000151: if (PropertyChanged! = Null)
IL_0016: / * 02 | * / ldarg.0
IL_0017: / * 7B | (04) 00007C * / ldfld класс [System / 23000002
/]System.ComponentModel.PropertyChangedEventHandler/01000013/ KNXClientConsole.Controls.Displays.SevenSegment / 02000010 / :: PropertyChanged / * 0400007C * / *
IL_001c: / * 14 | * / ldnull
IL_001d: / * FE01 | * / ceq
IL_001f: / * 0A | * / stloc.0
IL_0020: / * 06 | * / ldloc.0
IL_0021: / * 2D | 19 * / brtrue.s IL_003c
Если вы посмотрите эту строку, вы увидите, что детального кода нет со смещением 1b.
Смещение 1b - это последний байт обработчика PropertyChanged.
Я не могу найти смещение 1b. Где это или лучше в чем причина проблемы?
IL_0017: / * 7B | (04) 00007C * / ldfld класс [System / 23000002
/]System.ComponentModel.PropertyChangedEventHandler/01000013/ KNXClientConsole.Controls.Displays.SevenSegment / 02000010 / :: PropertyChanged / * 0400007C * / *
Ошибка: fatalerror , поэтому у меня нет достаточного объяснения этому.
Забавная часть истории состоит в том, что у меня есть 7 похожих свойств (ON_Seg0 ... ON_Seg6) с тем же кодом, и исключение никогда не происходит там только в ON_Seg4.
Эти свойства я использую для имитации состояния ВКЛ / ВЫКЛ 7-сегментного индикатора. Эти свойства привязаны к графическому объекту XAML.
XAML часть:
Это полная история, поэтому, если у кого-то есть какое-то решение или подсказка, пожалуйста, помогите мне.