15

これは 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()

私がこれを間違って理解している場合は、私を修正してください。

4

2 に答える 2

30

バグではありません。のデフォルトShutdownModeはでApplicationあるOnLastWindowClosedため、最初のウィンドウが閉じられるとすぐに、アプリケーションはシャットダウンを開始します! に変更するOnExplicitShutdownと動作しますが、シャットダウンを管理する必要があります。

おそらく、実際に達成しようとしていることを再考する必要があると思います。アプリの起動中に 2 つの連続するダイアログ ウィンドウを表示するのはなぜですか?

于 2009-08-07T09:49:20.207 に答える