2011-06-23 51 views
2

私のプログラムのメインウィンドウを閉じた後も、プロセスはバックグラウンドで実行されています。 この奇妙な問題の原因は何ですか。プログラムの終了時にプロセスが終了しない

(私が関連している私のプログラムコードの一部を知らない)

+0

を呼び出すことによって終了するためにアプリケーションを強制することができますか?次に、子ウィンドウを閉じることができます。 – Joe

答えて

5

まず、アプリケーションのShutdownModeプロパティの値がShutdownMode.OnMainWindowCloseに等しいことを確認します。そうでない場合は、実際の値によってアプリケーションが終了できないかどうかを確認してください。

これで問題が解決しない場合は、メインウィンドウが閉じた後もバックグラウンド以外のスレッドが1つ以上実行されているため、プロセスがシャットダウンしません。デバッガに侵入し、まだ生きているスレッド数と実行中のスレッド数を確認します。これはあなたを解決策に導きます。

+0

見つけた! OnLastWindowCloseに設定されました。ありがとうございました:) –

+0

@GiladNaaman:HTH :) – Jon

1

一つの可能​​性はあなたがバックグラウンドに設定されていないか、あなたはそれを行うコードを呼び出しているスレッドを作成することです。あなたのメインスレッドをシャットダウンしてもプロセスが "生き続ける"ことがあります。

終了する前にすべてのスレッドを終了するか、またはIsBackgroundプロパティをtrueに設定してください。

2

現在実行中のスレッドを表示して終了するアプリケーションを停止するには、Visual Studioで "Break All"を押し、カーソルの停止位置を確認します。

注:あなたは、ウィンドウ/アプリケーションは、「デフォルトのウィンドウ」として機能し、おそらく最初のウィンドウを隠すウィンドウを起動し、デフォルトんEnvironment.Exit();