アプリケーションを終了する方法は次のとおりです。
Enviroment.Exit(0)
Application.Exit()
Form.Close()
これら3つの方法の違いと、それぞれを使用するタイミングは何ですか?
適切なメソッドはApplication.Exit()
です。 Documentation によると、すべてのメッセージループを終了し、すべてのウィンドウを閉じるため、フォームでクリーンアップコード(Form.OnCloseなど)を実行できるようになります。
_Environment.Exit
_はプロセスを強制終了します。何らかの形式がある場合未保存の変更では、ユーザーに保存するかどうかを尋ねる機会がありません。また、リソース(データベース接続など)を適切に解放できなかった、ファイルがフラッシュされなかったなど。
_Form.Close
_は、それが言うことをするだけです:フォームを閉じます。他のフォームを開いている場合(おそらく今ではなく、アプリケーションの将来のバージョンで)、アプリケーションは終了しません。
マルチスレッドを使用する場合、Application.Exit()
はスレッドを終了しないことに注意してください(したがって、GUIが終了しても、アプリケーションはバックグラウンドで動作し続けます)。したがって、メイン関数(つまり、Program.Main()
)で、またはメインフォームのOnClose
イベントで、スレッドを強制終了する手段を講じる必要があります。
彼らはすべて大丈夫です。しかし、form.Close()
はアプリケーションを閉じず、フォームを閉じ、その後メインメソッドがint(exitcode)を返します。
アプリケーションを終了コードで終了させる場合は、Environmet.Exit(exitcode)
を使用するか、メインメソッドで終了コードを返します。