73

アプリケーションを終了する方法は次のとおりです。

  1. Environment.Exit(0)
  2. Application.Exit()
  3. Form.Close()

これらの3つの方法と、それぞれをいつ使用するかの違いは何ですか?

4

3 に答える 3

120

適切な方法はですApplication.Exit()ドキュメントによると、すべてのメッセージループを終了し、すべてのウィンドウを閉じて、フォームにクリーンアップコード(Form.OnCloseなど)を実行できるようにします。

Environment.Exitプロセスを強制終了します。たとえば、フォームに未保存の変更がある場合、ユーザーにそれらを保存するかどうかを尋ねる機会はありません。また、リソース(データベース接続など)が適切に解放されなかったり、ファイルがフラッシュされなかったりする可能性があります。

Form.Closeそれが言うことをするだけです:それはフォームを閉じます。他のフォームを開いている場合(おそらく現在ではありませんが、アプリケーションの将来のバージョンで)、アプリケーションは終了しません。

マルチスレッドを使用する場合、Application.Exit()スレッドは終了しないことに注意してください(したがって、GUIが終了しても、アプリケーションはバックグラウンドで動作し続けます)。Program.Main()したがって、メイン関数(つまり)またはOnCloseメインフォームのイベントのいずれかで、スレッドを強制終了するための対策を講じる必要があります。

于 2012-10-24T09:08:43.997 に答える
4

それらはすべて大丈夫です。ただしform.Close()、アプリケーションを閉じないでフォームを閉じ、その後、mainメソッドがint(exitcode)を返します。

アプリケーションをexitcodeで終了する場合 Environmet.Exit(exitcode)は、mainメソッドでexitcodeを使用または返します。

于 2012-10-24T09:12:39.590 に答える
-5
Dim forceExitTimer = New Threading.Timer(Sub() End, Nothing, 2500, Timeout.Infinite)
Application.Exit()

この方法は完璧であり、ソフトウェアを強制的に閉じる残忍なEndコマンドを呼び出す前に、application.exitでソフトウェアを穏やかに閉じることができます。

于 2018-10-05T16:39:27.797 に答える