如何从MessageBox.Show引起的未处理的InvalidOperationException中恢复?

时间:2014-04-24 11:51:52

标签: c# wpf messagebox

我遇到了与此处描述的问题相同的问题:

Dispatcher throws InvalidOperationException on Messagebox.Show in Textchanged event

虽然解决方案对我有用,但我想解决另一个问题:当我无法控制是否显示消息框(外部代码)时,如何从中优雅地恢复?

如果我设置e.Handled = false,那么代码的其余部分会传播异常,直到它被其他地方捕获,它会使一些琐碎的警告或信息性消息框弄乱应用程序的其余部分。

另一方面,如果我设置e.Handled = true调度程序未处理的异常处理程序被反复调用,直到我按下"确定"在消息框中,应用程序保持"冻结"。按暂停,这是调用堆栈: enter image description here

新建:关闭MessageBox后按任意键(以窗口为中心)会导致应用程序解冻并继续正常执行。

如何在不破坏应用程序的情况下关闭MessageBox? (即使根本没有显示消息框)

修改
这里要求的是异常堆栈跟踪。

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 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

检测到更多行为,请参阅" "

0 个答案:

没有答案