ОБНОВЛЕНИЕ: я создал приложение WPF без кода, просто вставил TextBox и кнопку и собрал его. При запуске этого приложения я вижу ту же ошибку на компьютере этого пользователя. Вы можете нажать на кнопку, и она работает нормально, но как только вы нажимаете клавишу на клавиатуре, приложение выдает ту же ошибку. Должен ли я переустановить .Net Framework? Любые другие рекомендации?
Оригинальный вопрос:
У меня есть приложение WPF, распространяемое через ClickOnce в корпоративной среде. Десятки пользователей запускают мое приложение без проблем. Однако есть один пользователь, который не может запустить приложение. Если я вхожу в его машину, я также получаю сообщение об ошибке. Ошибка для пользователя - стандартное сообщение об ошибке, когда происходит любое исключение. Поэтому мне нужно было отладить его удаленно.
Программа загружается без проблем и помещает фокус на TextBox, как только TextBox теряет фокус или пользователь нажимает клавишу, программа вылетает.
Я подключил свою визуальную студию к приложению, работающему на проблемной машине, и мне удалось записать следующую трассировку стека.
"в MS.Win32. UnsafeNativeMethods.ITfKeystrokeMgr.TestKeyUp (Int32 wParam, Int32 lParam, Boolean & eaten)
в System.Windows.Input.TextServicesContext.Keystroke (Int32 wParam, Int32 lParam, KeyOp op)
в System.Windows.Input.TextServicesManager.TextServicesKeystroke (контекст TextServicesContext, KeyEventArgs keyArgs, логический тест)
в System.Windows.Input.TextServicesManager.PreProcessInput (Отправитель объекта, PreProcessInputEventArgs e)
в System.Windows.Input.InputManager.ProcessStagingArea () \ r \ n в System.Windows.Input.InputManager.ProcessInput (вход InputEventArgs)
в System.Windows.Input.InputProviderSite.ReportInput (InputReport inputReport)
в System.Windows.Interop.HwndKeyboardInputProvider.ReportInput (IntPtr hwnd, режим InputMode, временная метка Int32, действия RawKeyboardActions, Int32 scanCode, логический isExtendedKey, логический isSystemKey, Int32 virtualKey)
в System.Windows.Interop.HwndKeyboardInputProvider.ProcessKeyAction (MSG & msg, Boolean & handled)
в System.Windows.Interop.HwndSource.CriticalTranslateAccelerator (MSG & msg, модификаторы ModifierKeys)
в System.Windows.Interop.HwndSource.OnPreprocessMessage (Object param)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall (обратный вызов делегата, аргументы объекта, логическое значение isSingleParameter)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen (источник объекта, обратный вызов делегата, аргументы объекта, логический isSingleParameter, делегат catchHandler)
в System.Windows.Threading.Dispatcher.WrappedInvoke (обратный вызов делегата, аргументы объекта, логическое значение isSingleParameter, делегат catchHandler)
в System.Windows.Threading.Dispatcher.InvokeImpl (приоритет DispatcherPriority, время ожидания TimeSpan, метод Delegate, аргументы объекта, логический isSingleParameter)
в System.Windows.Threading.Dispatcher.Invoke (приоритет DispatcherPriority, метод делегата, объектный аргумент)
в System.Windows.Interop.HwndSource.OnPreprocessMessageThunk (MSG & msg, Boolean & handled)
в System.Windows.Interop.HwndSource.WeakEventPreprocessMessage.OnPreprocessMessage (MSG & msg, Boolean & handled)
в System.Windows.Interop.ComponentDispatcherThread.RaiseThreadMessage (MSG & msg)
в System.Windows.Threading.Dispatcher.PushFrameImpl (фрейм DispatcherFrame)
в System.Windows.Threading.Dispatcher.PushFrame (фрейм DispatcherFrame)
в System.Windows.Threading.Dispatcher.Run ()
в System.Windows.Application.RunDispatcher (игнорирование объекта)
в System.Windows.Application.RunInternal (окно окна)
в System.Windows.Application.Run (окно окна)
в System.Windows.Application.Run ()
в TIS.SamSeek.WpfClient.App.Main () "
Я получаю исключение System.Argument с описанием: «Значение не попадает в ожидаемый диапазон».
InnerException: null
Источник: WindowsBase
TargetSite: {Void TestKeyUp (Int32, Int32, Boolean ByRef)}DeclaringType: {Name = "ITfKeystrokeMgr" FullName = "MS.Win32.UnsafeNativeMethods + ITfKeystrokeMgr"}
Сборка: {WindowsBase, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35}
Метод объявления: '((System.Type) (((System.Reflection.MemberInfo) (((System.Exception) ($ exception)). TargetSite)). DeclaringType)). DeclaringMethod' вызвал исключение типа 'System. InvalidOperationException '
Сообщение: «Метод может быть вызван только для типа, для которого Type.IsGenericParameter имеет значение true».
источник: "mscorlib"
Я поместил в код все виды трассировок, и я почти уверен, что мой код напрямую не вызывает это исключение. В моем коде нет событий KeyUp.
Что вы предлагаете?
Большое спасибо