誰かが私が抱えている問題に光を当てることができますか?
私はwpfプロジェクトに取り組んでいます。シナリオは次のとおりです。
メイン UI スレッドでウィンドウ (モデル ウィンドウ) をポップアップしてから閉じる必要があります。これらの作業は別の UI スレッドから開始され (ユーザーがメインの UI ウィンドウをクリックするのを防ぐため)、このウィンドウを閉じます。主なコードを以下に示します。そして、それは機能します。
私が知る限り、閉じるメソッドがShowDialog()
返される前に実行されることはありません (少なくともこれは UI スレッドの場合であり、ディスパッチャのないコードを意味します)、マルチスレッドの経験がある人はいますか?
Window window;
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(() =>
{
//create a window and let user work from this thread
//code is omitted.
//create another window on main UI thread
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
window = new Window();
window.ShowDialog();
}));
//do some work here
Thread.Sleep(1000);
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
//Thread.Sleep(1000);
window.Close();
}));
});
thread.Start();
}
お時間をいただきありがとうございます!