我在一个单独的调度程序中创建了一个新窗口
Dispatcher dispatcher = null;
var newWindowThread = new Thread(() =>
{
MainWindow window = new MainWindow();
window.ShowDialog();
});
newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.IsBackground = true;
newWindowThread.Start();
while (dispatcher == null)
{
Thread.Sleep(10);
dispatcher = Dispatcher.FromThread(newWindowThread);
}
然后使用这个调度程序我可以调用一些动作,但在这种情况下这个窗口是模态的,我不喜欢它,我需要一个不是模态的单独窗口。
当我使用Show()而不是ShowDialog()时,执行结束,我的调度员将无法工作。
我怎么能把它放在一个无限循环中呢?
但是需要激活并响应Invoke()。
答案 0 :(得分:0)
我找到了一个解决方案:
var newWindowThread = new Thread(() =>
{
MainWindow window = new MainWindow();
window.Show();
window.Closed += window_Closed; //here we have method which will shutdown current Dispatcher when window is closed
Dispatcher.Run();
});
仍然不确切知道Dispatcher.Run();有效,但它做我需要的。