私のプログラムのメインウィンドウを閉じた後も、プロセスはバックグラウンドで実行されています。 この奇妙な問題の原因は何ですか。プログラムの終了時にプロセスが終了しない
(私が関連している私のプログラムコードの一部を知らない)
私のプログラムのメインウィンドウを閉じた後も、プロセスはバックグラウンドで実行されています。 この奇妙な問題の原因は何ですか。プログラムの終了時にプロセスが終了しない
(私が関連している私のプログラムコードの一部を知らない)
まず、アプリケーションのShutdownMode
プロパティの値がShutdownMode.OnMainWindowClose
に等しいことを確認します。そうでない場合は、実際の値によってアプリケーションが終了できないかどうかを確認してください。
これで問題が解決しない場合は、メインウィンドウが閉じた後もバックグラウンド以外のスレッドが1つ以上実行されているため、プロセスがシャットダウンしません。デバッガに侵入し、まだ生きているスレッド数と実行中のスレッド数を確認します。これはあなたを解決策に導きます。
見つけた! OnLastWindowCloseに設定されました。ありがとうございました:) –
@GiladNaaman:HTH :) – Jon
一つの可能性はあなたがバックグラウンドに設定されていないか、あなたはそれを行うコードを呼び出しているスレッドを作成することです。あなたのメインスレッドをシャットダウンしてもプロセスが "生き続ける"ことがあります。
終了する前にすべてのスレッドを終了するか、またはIsBackground
プロパティをtrueに設定してください。
別の理由として、誰かがApplication.ShutdownMode
をOnExplicitShutdown
に設定している可能性があります。
現在実行中のスレッドを表示して終了するアプリケーションを停止するには、Visual Studioで "Break All"を押し、カーソルの停止位置を確認します。
注:あなたは、ウィンドウ/アプリケーションは、「デフォルトのウィンドウ」として機能し、おそらく最初のウィンドウを隠すウィンドウを起動し、デフォルトんEnvironment.Exit();
を呼び出すことによって終了するためにアプリケーションを強制することができますか?次に、子ウィンドウを閉じることができます。 – Joe