これは WPF フレームワークのバグだと思います。プログラムの詳細や、自分がしていることを行っている理由には触れずに、自分の理論を証明する簡単なテスト アプリケーションを作成しました。
この問題は確認できますか? アプリケーションを実行ループに入れる前に一連のダイアログを実行するには、どのような回避策がありますか?
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace ShowDialogWindow
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
Window testWindow = new Window();
testWindow.ShowDialog();
testWindow.Close();
// THE CODE BELOW WILL NOT SHOW THE NEXT WINDOW
Window testWindow2 = new Window();
testWindow2.ShowDialog();
testWindow2.Close();
}
}
}
アップデート:
確かに、この動作に対応するようにデザインを変更できます。しかし、私がやろうとしていたことは本当に簡単でした。
MyApplication
から派生しましApplication
た。でMain()
、一連の開始チェックを開始します。たとえば、ライセンス情報、スプラッシュ スクリーン、接続および構成のチェックなどです。すべてがクリアになったら、 に電話しますMyApplicatiom.Run(MyMainForm)
。
この設計は、問題なく動作する通常の Windows アプリケーションに基づいています。
ご協力いただきありがとうございます。シャットダウンを初期化するだけなので、ShowDialog()
以前に電話することはできません。ただし、シャットダウン シーケンスは命令application.Run()
の後にのみ開始する必要があると考えていました。App.Run()
私がこれを間違って理解している場合は、私を修正してください。