将Messagebox放在任何项目的任何UserControl中的任何位置时出现InvalidOperationException

时间:2013-09-21 21:26:33

标签: c# wpf exception visual-studio-2012

我已经开始在VS2012 Ultimate中获得InvalidOperationException说:

“调度程序处理已暂停,但邮件仍在处理中。”

...每当我在MessagBox代码隐藏中的任何地方拨打UserControl时。这当前似乎会影响我的计算机上的每个项目,包括我下载的项目以及除UserControl本身之外没有真正代码的新项目。但这似乎只影响UserControl s;标准类和Windows的代码隐藏工作正常。


发生了System.InvalidOperationException

的HResult = -2146233079

Message = Dispatcher处理已暂停,但邮件仍在处理中。

源= WindowsBase

堆栈跟踪:        在System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,Boolean& processed)

InnerException:


InnerException为空,因为根据VS,它为null。这个问题对任何人都有意义吗?在Google搜索之后,我发现了一些抛出此异常的实例,但这些情况都不是这样的。我希望这里的某些人可能对可能导致这种情况的原因有所了解,并且可能能够在我重新安装VS并希望最好之前帮助我。

任何关于如何解决这个问题的想法都将非常感激。


Per Mark Hall的要求:像这样简单的类会导致异常:

public partial class TestView : UserControl
{
    public TestView()
    {
        InitializeComponent();

        System.Windows.MessageBox.Show("Test");
    }
}

1 个答案:

答案 0 :(得分:1)

Hans Passant是对的,你真的不应该在构造函数中尝试显示一个消息框。不仅在运行时调用构造函数,而且在设计时调用构造函数。

如果您正在使用它进行调试,请尝试写入日志文件或Console.WriteLine(...)。