2013-12-03 2 views
0

Я открываю следующее окно, используя приведенный ниже код, поскольку он работает в другом потоке в потоке пользовательского интерфейса. Я получаю 'Initialization of 'System.Windows.Controls.X' threw an exception.'..., но когда я вызываю следующее окно обратно в поток пользовательского интерфейса, я не получаю сообщение об ошибке. Как мне преодолеть вызов окна из другого потока?Открытие окна со второй нитью

Page2 page2 = new Page2(); 
App.Current.MainWindow = page2; 
this.SimpleInvoke(() => this.Close()); 
this.SimpleInvoke(() => page2.Show()); 

public static class DispatcherObjectExtensions 
{ 
    public static void SimpleInvoke(this DispatcherObject dispatcherObject, Action action) 
    { 
     dispatcherObject.Dispatcher.Invoke(action); 
    } 
} 

ответ

0

Попробуйте что-то вроде этого:

Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,    (ThreadStart)delegate() 
{ 
     // in the gui thread here, so do what you gotta do 
}); 
+0

Нету, положить Thread.Sleep там и пользовательский интерфейс замораживается. – windowskm

Смежные вопросы