WPF - 将Window.Owner初始化为在不同线程上创建的窗口

时间:2011-06-15 20:17:59

标签: wpf multithreading

窗口_splash是在另一个线程上创建的。

MainWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
MainWindow.Owner = _splash; // Throw: The calling thread cannot access this object because a different thread owns it

如何使此代码有效?

2 个答案:

答案 0 :(得分:1)

不要听起来很糟糕,但是通过在运行主窗口的UI线程上运行启动画面来修复它。为什么启动画面需要自己的线程?

答案 1 :(得分:0)

  1. 不要在UI线程上进行任何长时间运行的工作。使用BackgroundWorkerReactiveExtensions之类的内容可以轻松完成此任务。
  2. 在UI线程上创建所有Window个实例。