我正在研究为Kiosk(触摸屏)构建的
WPF应用程序.我们为自己构建虚拟键盘.
有一个屏幕我们使用带有TextBox的DataGrid控件列出一些项目(最多4个项目).虚拟键盘显示焦点(这就是它的构建方式).
当我们随机选择不同的项目时,应用程序崩溃而不会到达通用异常处理程序.此问题在触摸屏上可重复,但在常规屏幕中不可重复.事件日志显示如下,
Application: CashNGo.WPF.exe Framework Version: v4.0.30319 Description: The application requested process termination through System.Environment.FailFast(string message). Message: Unrecoverable system error. Stack: at System.Environment.FailFast(System.String) at MS.Internal.Invariant.FailFast(System.String,System.String) at MS.Internal.Invariant.Assert(Boolean,System.String) at System.Windows.Documents.TextStore.VerifyTextStoreConsistency() at System.Windows.Documents.TextStore.GrantLock() at System.Windows.Documents.TextStore.GrantLockWorker(LockFlags) at System.Windows.Documents.TextStore.RequestLock(LockFlags,Int32 ByRef) at MS.Win32.UnsafeNativeMethods+ITextStoreACPSink.OnSelectionChange() at System.Windows.Documents.TextStore.OnSelectionChanged() at System.Windows.Documents.TextSelection.System.Windows.Documents.ITextRange.NotifyChanged(Boolean,Boolean) at System.Windows.Documents.TextRangeBase.EndChange(System.Windows.Documents.ITextRange,Boolean,Boolean) at System.Windows.Documents.TextSelection.System.Windows.Documents.ITextRange.Select(System.Windows.Documents.ITextPointer,System.Windows.Documents.ITextPointer) at System.Windows.Controls.TextBox.Select(Int32,Int32) at System.Windows.Controls.TextBox.set_CaretIndex(Int32) at Common.Controls.SoftKeyboard.<.cctor>b__1c(System.Windows.Controls.TextBox) at System.Windows.Input.DelegateCommand`1[[System.__Canon,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]].Execute(System.__Canon) at Common.Controls.SoftKeyboard+<>c__DisplayClass5.<SoftKeyboardFocus_Changed>b__0() at System.Windows.Threading.Dispatcher.Invoke(System.Action,System.Windows.Threading.DispatcherPriority,System.Threading.CancellationToken,System.TimeSpan) at System.Windows.Threading.Dispatcher.Invoke(System.Action,System.Windows.Threading.DispatcherPriority) at Common.Extensions+<>c__DisplayClass1.<DelayedInvoke>b__0(System.Object,System.EventArgs) at System.Windows.Threading.DispatcherTimer.FireTick(System.Object) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object,System.Delegate,Int32,System.Delegate) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Object) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr,IntPtr,Boolean ByRef) at MS.Win32.HwndWrapper.WndProc(IntPtr,Boolean ByRef) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Delegate) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority,System.TimeSpan,Int32) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr,IntPtr) at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(System.Object) at System.Windows.Application.RunInternal(System.Windows.Window) at System.Windows.Application.Run(System.Windows.Window) at System.Windows.Application.Run() at CashNGo.WPF.App.Main()
我做了一些搜索,找到了http://social.msdn.microsoft.com/Forums/vstudio/en-US/dfbd2526-8953-4ce8-97c2-43246fd251c0/wpf-framework-crashing-on-setting-foxus-in-textbox?forum=wpf,这是完全相同的例外.
任何建议都会有所帮助.
解决方法
关闭一个名为的Windows服务.
Tablet PC Input Service