繁体   English   中英

当我与控件交互时,新 WPF 窗口中的 InvalidOperationException

[英]InvalidOperationException in a new WPF window when I interact with a control

我有一个单词插件,可以将自定义工具栏添加到 UI。 该工具栏上有一个按钮,单击可打开 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)

只有当我与窗口中的控件交互时才会发生这种情况。 它与任何特定控件无关,我已经删除了所有内容,只是在窗口中间创建了一个空文本框。 尽管如此,只要我点击它,应用程序就会崩溃。

现在我知道这个异常基本上告诉我,我可能正在执行一个操作,在可视化树修改中间修改可视化树(比如在可见性改变时显示消息框)。 但我不会做那样的事情。 我只是打开一个窗口,然后单击里面的控件。

有人对原因有任何想法吗?

对于任何感兴趣的人,我最终设法解决了这个问题。 原来,wpf 对话实际上是一个带有 elementhost 的 WindowsForms 表单。 父 WinForms 窗体中有一些代码在 ElementHost 的 VisibleChanged 事件上执行:

this.TopMost = true;
Application.DoEvents();
this.TopMost = false;

这是为了确保对话在首次显示时始终显示在顶部。 这段代码一删除,异常就消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM