メインウィンドウのレンダリング時にgifをロードしてウィンドウを作成する必要があります。私はいくつかの記事を読んで、この目的のために私は新しいスレッドを作成する必要があるという決定を下す。WPF別のSTAスレッドのレクリエーションウィンドウ
LoadingDialog _loadingDlg;
Thread loadingThread;
public void ShowLoading()
{
loadingThread = new Thread(new ThreadStart(loadingThreadWork));
loadingThread.SetApartmentState(ApartmentState.STA);
loadingThread.Start();
}
private void loadingThreadWork()
{
_loadingDlg = new LoadingDialog();
_loadingDlg.Show();
System.Windows.Threading.Dispatcher.Run();
}
public void HideLoading()
{
_loadingDlg.Dispatcher.InvokeShutdown();
}
私は私がしたいようShowLoading()
、その後HideLoading()
すべての作品を呼び出し初回:私はそのような何かを持っている結果this article
のようにそれをやりました。私は2回目にShowLoading()
を呼び出すときしかし、私はメッセージThe calling thread cannot access this object because a different thread owns it
で
_loadingDlg.Show();
で例外を取得します。
これはどのようにすることができますか? _loadingDlg
は、前の行と同じスレッドで作成されます。
なぜ新しいウィンドウを作成しますか?中心に置かれたグリッドを作成するだけでなく、表示の切り替えもできます。 –