進捗ウィンドウを別のスレッドで表示する必要があります。新しいスレッドでウィンドウを読み込む
Thread loadT = new Thread(new ThreadStart(() =>
{
Loading ldd = new Loading();
ldd.SetContentMessage("Loading...");
ldd.Closed += (s, ec) =>
Dispatcher.CurrentDispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
ldd.ShowDialog();
}));
loadT.SetApartmentState(ApartmentState.STA);
loadT.Start();
//do something
loadT.Abort();
しかし、私は、これは正しい方法だとは思わない: これは私がやったものです。私は別のプロセスのためにこのウィンドウを使いたいと思うし、私はまた、他のウィンドウの上にウィンドウを設定したい。どのアプローチが最適ですか? Ty!
メイン/ UIスレッド以外のスレッドでUIのものを使用しないでください。これは基本的なルールです。代わりに、ワーカースレッドからUIスレッドで更新コードを適切に呼び出すことによって、進行状況インジケータを更新します。 –
プランを切り替えてください。あなたの仕事を別のスレッドにプッシュし、メインスレッドでローディングウィンドウを開始/表示/制御します。 – Skintkingle
残念ながら、私はメインスレッドでこの操作を実行する必要があります。私はこの記事(https://strukachev.wordpress.com/2011/01/09/wpf-progress-window-in-separate-thread/)を見つけました。これは良いアプローチですか? –