【发布时间】:2017-02-20 07:03:29
【问题描述】:
我有一个添加自定义工具栏到 UI 的 word 插件。该工具栏上有一个按钮,点击后会打开一个 WPF 窗口。
我最近在那个窗口周围出现了一些奇怪的行为。当我尝试与窗口上的任何控件交互时(即单击文本框开始输入、选中复选框等),窗口就会打开。我收到很多 InvalidOperationException:
************** Exception Text **************
System.InvalidOperationException: Dispatcher processing has been suspended, but messages are still being processed.
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
只有当我与窗口中的控件交互时才会发生这种情况。它与任何特定控件无关,我已经删除了所有内容,只是在窗口中间创建并清空了文本框。不过,只要我点击它,应用就会崩溃。
现在我知道这个异常基本上告诉我,我可能正在执行一个在可视化树修改过程中修改可视化树的操作(例如在可见性更改时显示消息框)。但我不会做那样的事情。我只是打开一个窗口,然后点击里面的一个控件。
有人对原因有什么想法吗?
【问题讨论】:
-
是的,我已经尝试通过 Dispatcher 打开窗口,但没有成功。问题是窗口打开时不会抛出异常,当您尝试与窗口中的任何内容进行交互时会抛出异常。
-
你能给我们一个最小的样本来重现这个问题吗?顺便说一句,我怀疑这与 ms-word 有关,因此删除该标签可能会在这里为您提供更多的受众...
-
遗憾的是,我无法在我的主应用程序环境之外复制它。如果您将其解耦,则代码实际上并没有什么特别之处。它只是一个启动对话的按钮。