尝试打开新窗口时抛出InvalidOperationException

时间:2010-11-25 07:20:57

标签: wpf c#-3.0

我有这个WPF应用程序,MainNavigationWindow在其构造函数中注册了其他类的事件:

SomeClass obj = new SomeClass(); 
obj.SomeEvent += new EventHandler(SomeEventHandler);

在EventHandler方法中,我试图显示另一个窗口,如:

SomeWindow window = new SomeWindow();
window.ShowDialog();

但是在创建新对象时会抛出上述异常。任何人都可以告诉我可能出现的问题是什么以及如何解决?

请注意,SomeWindow仅来自System.Window。

1 个答案:

答案 0 :(得分:5)

听起来这个事件没有在UI线程中引发,你需要在创建窗口之前编组到UI线程。这可能就像将事件处理程序代码更改为:

一样简单
Action action = () => {
    SomeWindow window = new SomeWindow();
    window.ShowDialog();
};
Dispatcher.BeginInvoke(action);