7

Application.Current.Shutdown()でxamlウィンドウにバインドされているクラスから呼び出してObjectDataProviderいますが、アプリケーションが閉じていません。誰かが私に理由を理解するのを手伝ってもらえますか?メインウィンドウを閉じた後、アプリケーションが完全に閉じていません。タスクマネージャーのプロセスリストから消えません。

4

6 に答える 6

26

Environment.Exit(0)代わりに試してください

于 2009-05-14T06:39:33.683 に答える
11

バックグラウンド処理を行うためのスレッドを作成しましたか?持っている場合は、必ず.IsBackgroundプロパティを設定してください。そうしないと、アプリを実行し続けることができます。

于 2009-05-01T08:15:22.887 に答える
5

これを追加することを忘れないでください:

private void Window_Closed(object sender, EventArgs e)
{
  Application.Current.Shutdown();
}

お役に立てれば。

于 2009-05-22T14:19:04.967 に答える
1

アプリケーションに複数のウィンドウまたはダイアログがある場合は、それぞれを明示的に閉じる必要がある場合があります。

次のコマンドでダイアログを閉じます。

_myDialog.Close();

すべてのウィンドウを閉じます。

foreach(var window in Application.Current.Windows.ToList())
{
    window.Close();
}
于 2009-05-01T09:16:57.823 に答える
1

メインウィンドウを閉じてもアプリケーションがシャットダウンしないという問題がありました。Close()の代わりにスプラッシュ画面でHide()を実行したことが判明したため、アプリケーションを存続させるためにバックグラウンドに潜んでいました。

于 2014-04-01T08:47:02.173 に答える
0

同じ問題が発生しました。アプリケーションを閉じても、アプリケーションプロセスが停止しません。

私の場合、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();
 }));

それが役に立てば幸い。

于 2011-11-23T21:25:22.880 に答える