ボタンをMainWindow
クリックするだけで、数秒かかる可能性のある計算を実行することができます。その間、「お待ちください...」という小さなダイアログ(または別のウィンドウ)を表示したいのですが、その途中でMainWindow
完全にブロックされるため、このダイアログを閉じるまでユーザーは何もできません。ウィンドウを作成して開いてみましたwindow.ShowDialog();
が、もちろん手順は続行されません...
他に機能する方法はありますか?
このコードで試すことができます
ブロッキングなし
あなたのコードで
....
Thread newThread = new Thread(new ThreadStart(Create));
newThread.SetApartmentState(ApartmentState.STA);
newThread.IsBackground = true;
newThread.Start();
....
}
private void Create()
{
Window1 tempWindow = new Window1();
tempWindow.Show();
System.Windows.Threading.Dispatcher.Run();
}
メインウィンドウをブロックする
ウィンドウを生成するために、Prism
フレームワークを使用したり、クラスを使用したりすることもできますInteractionRequest
http://msdn.microsoft.com/en-us/library/gg405494%28v=pandp.40%29.aspx
ウィンドウを開く前に、別のスレッドで計算を開始するのはどうですか?
計算用に新しい を作成することもできDispatcherFrame
ます。
または、ルートに近いコントロールにPopup
設定して表示します。IsEnabled
false
または、コードをダイアログのイベントに移動しますLoaded
。