3

ボタンをMainWindowクリックするだけで、数秒かかる可能性のある計算を実行することができます。その間、「お待ちください...」という小さなダイアログ(または別のウィンドウ)を表示したいのですが、その途中でMainWindow完全にブロックされるため、このダイアログを閉じるまでユーザーは何もできません。ウィンドウを作成して開いてみましたwindow.ShowDialog();が、もちろん手順は続行されません...

他に機能する方法はありますか?

4

3 に答える 3

1

このコードで試すことができます

ブロッキングなし

あなたのコードで

    ....
    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

于 2012-09-08T16:02:12.893 に答える
1

ウィンドウを開く前に、別のスレッドで計算を開始するのはどうですか?

計算用に新しい を作成することもできDispatcherFrameます。

または、ルートに近いコントロールにPopup設定して表示します。IsEnabledfalse

または、コードをダイアログのイベントに移動しますLoaded

于 2012-09-08T15:59:17.237 に答える