1
我一直在嘗試在窗口內的背景中加載另一個窗口;父窗口在我的情況下充當啓動畫面。在後臺加載另一個窗口;當呈現時,關閉父窗口
InitWindow I = null;
public InitWindow()
{
InitializeComponent();
I = this;
Thread T = new Thread(() =>
{
MainWindow M = new MainWindow();
M.Show();
M.ContentRendered += M_ContentRendered;
System.Windows.Threading.Dispatcher.Run();
M.Closed += (s, e) => M.Dispatcher.InvokeShutdown();
}) { IsBackground = true, Priority = ThreadPriority.Lowest };
T.SetApartmentState(ApartmentState.STA);
T.Start();
}
void M_ContentRendered(object sender, EventArgs e)
{
I.Close();
}
其他一切工作正常,但它在拋出無效運算異常:
I.Close();
調用線程,因爲不同的線程擁有它不能訪問該對象。
1)如何切換/同步線程?
2)有更好的解決方法嗎?
對於交互式啓動畫面,我寧願在後臺進行加載和設置,然後在完成後切換窗口的內容... –
@PatrykĆwiek你建議不要使用兩個窗口我應該使用一個? – Umayr
是的,首先顯示內容,做一些加載,然後將主窗口內容切換到您真正想要顯示的內容。當然,這對*交互式*閃屏非常有用,如果你只有一個圖像,那麼將構建操作設置爲「閃屏」,問題就可以毫無魔法地解決。 –