1

App_Startup() で MainWindow を読み込んでいます。ウィンドウの読み込み中に進行状況バーを表示したかったのです。しかし、それは機能していません:

void App_Startup(object sender, StartupEventArgs e)
{

    Thread bootStrapThread = new Thread(new ThreadStart(runBootStrapProcess));
    bootStrapThread.SetApartmentState(ApartmentState.STA);
    bootStrapThread.IsBackground = true;
    bootStrapThread.Start();
    _loadingProgressBar = new loadingProgressBar();
    _loadingProgressBar.ShowDialog();

}

スレッドからウィンドウをロードしたい:

void runBootStrapProcess()
        {
            MetadataReader mr = new MetadataReader();  
            if (currentVersionNo.Equals(remoteVersionNo))
            {
                Application.Current.Shutdown();
            }
            else
            {
                MainWindow mw = new MainWindow();
                mw.Show();
            }

            _loadingProgressBar.ShouldCloseNow = true;

        }
4

2 に答える 2

1

これを試すことができます:

void runBootStrapProcess() {
  MetadataReader mr = new MetadataReader();
  if (currentVersionNo.Equals(remoteVersionNo)) {
    Application.Current.Shutdown();
  } else {
    System.Windows.Application.Current.Dispatcher.BeginInvoke(
    new Action(
      () => {
        MainWindow mw = new MainWindow();
        mw.Show();
      }));
  }
  _loadingProgressBar.ShouldCloseNow = true;
}

ウィンドウを表示したいときは、基本的にスレッドからメインアプリケーションスレッドに送信します。MainWindowこれにより、スレッドがメインスレッドから表示されるため、スレッドが終了したときにアプリケーションが終了するのを防ぎます。

于 2013-03-30T23:09:21.627 に答える
0

Dispatcher を持つ WPF Application クラスが別の STA スレッドで実行されているため、ウィンドウにメッセージ ポンプが表示されていないと思われます。

于 2013-03-30T21:32:54.260 に答える