Application.Current.Shutdown()
でxamlウィンドウにバインドされているクラスから呼び出してObjectDataProvider
いますが、アプリケーションが閉じていません。誰かが私に理由を理解するのを手伝ってもらえますか?メインウィンドウを閉じた後、アプリケーションが完全に閉じていません。タスクマネージャーのプロセスリストから消えません。
6 に答える
Environment.Exit(0)
代わりに試してください
バックグラウンド処理を行うためのスレッドを作成しましたか?持っている場合は、必ず.IsBackground
プロパティを設定してください。そうしないと、アプリを実行し続けることができます。
これを追加することを忘れないでください:
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
お役に立てれば。
アプリケーションに複数のウィンドウまたはダイアログがある場合は、それぞれを明示的に閉じる必要がある場合があります。
次のコマンドでダイアログを閉じます。
_myDialog.Close();
すべてのウィンドウを閉じます。
foreach(var window in Application.Current.Windows.ToList())
{
window.Close();
}
メインウィンドウを閉じてもアプリケーションがシャットダウンしないという問題がありました。Close()の代わりにスプラッシュ画面でHide()を実行したことが判明したため、アプリケーションを存続させるためにバックグラウンドに潜んでいました。
同じ問題が発生しました。アプリケーションを閉じても、アプリケーションプロセスが停止しません。
私の場合、BackgroundWorkerからウィンドウを開きました(以下のコード)
BackgroundWorker BG = new BackgroundWorker();
BG.DoWork += new DoWorkEventHandler(BG_DoWork);
StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem
BG.RunWorkerAsync();
BackgroundWorkerを実行する前にウィンドウをインスタンス化することは問題ではないようですが、行を消去することにより、アプリケーションは正しく閉じられました
BackgroundWorkerからウィンドウを開きますが、プリンシパルスレッドを使用しています(以下のコード)
View.Dispatcher.BeginInvoke(new Action(delegate()
{
StockMinWindow MinWindow = new StockMinWindow(StockMinList);
MinWindow.Owner = View;
MinWindow.ShowDialog();
}));
それが役に立てば幸い。