根據我們的要求,我們必須在新的UI線程中打開WPF窗口。調用線程無法訪問此對象,因爲在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
顯示爲內容上面的代碼執行時。 我正在做一些動畫,如翻轉我的用戶控件鼠標雙擊事件。
當我雙擊它的應用程序開始拋出以下異常:
,因爲不同的線程擁有它調用線程不能訪問該對象。
on line System.Windows.Threading.Dispatcher.Run()
。
任何人都可以建議解決這個問題?
不好意思,這是因爲線程無法訪問對象,因爲不同的線程擁有它。哪一點你不完全理解,也許我們可以幫忙? –
http:// stackoverflow。com/questions/9560068/the-calling-thread-can-access-this-object – Karthik
@ Kieren Johnstone: - 爲了使它更清楚,我的動畫應該在邏輯上完美工作,因爲它運行在窗口所在的同一線程上創建,它不應該拋出任何異常。 –