アプリケーションを終了する方法は次のとおりです。
Environment.Exit(0)
Application.Exit()
Form.Close()
これらの3つの方法と、それぞれをいつ使用するかの違いは何ですか?
適切な方法はですApplication.Exit()
。ドキュメントによると、すべてのメッセージループを終了し、すべてのウィンドウを閉じて、フォームにクリーンアップコード(Form.OnCloseなど)を実行できるようにします。
Environment.Exit
プロセスを強制終了します。たとえば、フォームに未保存の変更がある場合、ユーザーにそれらを保存するかどうかを尋ねる機会はありません。また、リソース(データベース接続など)が適切に解放されなかったり、ファイルがフラッシュされなかったりする可能性があります。
Form.Close
それが言うことをするだけです:それはフォームを閉じます。他のフォームを開いている場合(おそらく現在ではありませんが、アプリケーションの将来のバージョンで)、アプリケーションは終了しません。
マルチスレッドを使用する場合、Application.Exit()
スレッドは終了しないことに注意してください(したがって、GUIが終了しても、アプリケーションはバックグラウンドで動作し続けます)。Program.Main()
したがって、メイン関数(つまり)またはOnClose
メインフォームのイベントのいずれかで、スレッドを強制終了するための対策を講じる必要があります。
それらはすべて大丈夫です。ただしform.Close()
、アプリケーションを閉じないでフォームを閉じ、その後、mainメソッドがint(exitcode)を返します。
アプリケーションをexitcodeで終了する場合
Environmet.Exit(exitcode)
は、mainメソッドでexitcodeを使用または返します。
Dim forceExitTimer = New Threading.Timer(Sub() End, Nothing, 2500, Timeout.Infinite)
Application.Exit()
この方法は完璧であり、ソフトウェアを強制的に閉じる残忍なEndコマンドを呼び出す前に、application.exitでソフトウェアを穏やかに閉じることができます。