根据我们的要求,我们必须在新的 UI 线程中打开一个 WPF 窗口。
我们使用以下代码在主 UI 线程的新 UI 线程中打开窗口:
Thread winthread = new Thread(new ThreadStart(() =>
{
SynchronizationContext.SetSynchronizationContext(
new DispatcherSynchronizationContext(
Dispatcher.CurrentDispatcher));
Window windowObj = new Window();
Grid gridObj = new Grid();
MyUserControl ctrl = new MyUserControl();
gridObj.Children.Add(ctrl);
windowObj.Content = gridObj;
windowObj.Show();
System.Windows.Threading.Dispatcher.Run();
}));
winthread.IsBackground = true;
winthread.SetApartmentState(ApartmentState.STA);
winthread.Start();
MyUserControl
执行上述代码时,窗口将显示为内容。我正在做一些动画,比如在鼠标双击事件上翻转我的用户控件。
当我双击它时,应用程序开始抛出以下异常:
调用线程无法访问此对象,因为不同的线程拥有它。
上线System.Windows.Threading.Dispatcher.Run()
。
谁能建议这个问题的解决方案?