0

グラフィック用の新しいウィンドウを作成するアプリケーションがあります。次の方法で作成します。

var thread = new Thread(() =>
{
    var win = new MyWindow();
    win.Show();
    Dispatcher.Run();
});

thread.SetApartmentState(ApartmentState.STA);
thread.Start();

問題は、メイン アプリケーションを閉じると、追加のウィンドウがまだ表示されているため、手動で閉じる必要があることです。私はtoと overridedにShutDownModeを設定 しました:App.xamlOnMainWindowCloseOnClosed

protected override void OnClosed(EventArgs e)
{
    base.OnClosed(e);
    Application.Current.Shutdown();
}

しかし、それは私を助けません。

4

4 に答える 4

2

ウィンドウ間の関係を確立したい場合は、新しいウィンドウの Owner プロパティを次のように設定する必要があります。

var childWindow = new ChildWindow();
childWindow.Owner = this;
childWindow.Show();

ここで、メイン ウィンドウを閉じると、そのすべての子ウィンドウも閉じます。

于 2013-06-27T10:12:43.613 に答える
1

生成したスレッドへの参照を保持し、アプリケーションを終了するときに、何らかの方法で (おそらく ManualResetEvent を介して) 終了するようにスレッドに通知します。その後、スレッドに参加してスレッドが終了するのを待つ必要があります。

_thread.Join();
于 2013-06-26T15:12:42.853 に答える