Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. —> System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
в SAM.API.Wrappers.SteamApps003.NativeGetCurrentGameLanguage.Invoke(IntPtr thisObject)
— Конец трассировки внутреннего стека исключений —
в System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
в System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
в System.Delegate.DynamicInvokeImpl(Object[] args)
в SAM.API.NativeWrapper`1.Call[TReturn,TDelegate](IntPtr pointer, Object[] args)
в SAM.Game.Manager.OnUserStatsReceived(UserStatsReceived param)
в SAM.API.Callback`1.Run(IntPtr pvParam)
в SAM.API.Client.RunCallbacks(Boolean server)
в SAM.Game.Manager.OnTimer(Object sender, EventArgs e)
в System.Windows.Forms.Timer.OnTick(EventArgs e)
в System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
Версия сборки: 6.3.0.987
Версия Win32: 6.3.0.987
Версия сборки: 6.3.0.799
Версия Win32: 6.3.0.799
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
Версия сборки: 3.5.0.0
Примечание : Эта программа раньше работала, но после того, как чуть не заблокировали мою систему, эта программа перестала работать.
На событии TextChanged возникает ошибка
System.Reflection.TargetInvocationException: “Адресат вызова создал исключение.” Внутреннее исключение NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
2 ответа 2
Перепишите код вот так!
При первом визове этого события у вас еще не создана екземпляр MainWindow ,следовательно и еще не работала функция InitializeComponent() и вы пытетесь получить еще не созданную TextBox2 .
Проблема в том, что, как правильно замечает @Vardan Vardanyan, интерпретация XAML, а значит, назначение обработчиков событий и привязка имён происходит во время выполнения InitializeComponent . При этом порядок этих операций не определён. В вашем случае порядок был следующим:
- установился обработчик TextChanged
- установилось значение Text в "TextBox" , при этом вызвался обработчик
- далее переменной TextBox2 должно было быть присвоено значение, соответствующее текстбоксу, но это не успело произойти, т. к. на предыдущем шаге случилось исключение.
(Заметьте, что стандарта на порядок выполнения этих операций нет, любой порядок возможен.)
Вы можете игнорировать событие во время InitializeComponent , проверяя TextBox2 на равенство null . Но более чистым решением мне кажется подписка на событие после отработки InitializeComponent . Для этого нужно убрать TextChanged="TextBox1_TextChanged" из XAML и добавить в конструктор: