2010-11-25 106 views
2

我有這樣的WPF應用程序中MainNavigationWindow已經registerd一些其他類的事件在其構造:出現InvalidOperationException拋出

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

在事件處理方法,我試圖表明另一個窗口,像:

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

但是,當創建新的對象時,上面的異常被拋出。任何人都可以告訴我有什麼可能的問題,我該如何解決它?

請注意,SomeWindow只從System.Window派生。

+0

哪條確切的線條拋出異常,異常中的消息是什麼? – 2010-11-25 07:30:30

+0

@Jon:SomeWindow window = new SomeWindow();這一行會引發錯誤。消息是:調用線程必須是STA,因爲許多UI組件都需要這個。 – munna 2010-11-25 07:37:16

回答

5

聽起來好像該事件並未在UI線程中引發,並且您需要在創建窗口之前編組到UI線程。這可能與將事件處理程序代碼更改爲如下一樣簡單:

Action action =() => { 
    SomeWindow window = new SomeWindow(); 
    window.ShowDialog(); 
}; 
Dispatcher.BeginInvoke(action); 
相關問題