2011-08-22 15 views
62

C#アプリケーションを閉じるときのベストプラクティスは何ですか?閉じるアプリケーション

私はあなたが使用できることを読みました:

Environment.Exit(0); or Application.Exit(); 

しかし、違いは何ですか?

さらに、Environment.Exit(0)に関しては、以前はJavaで作業するときに終了コードを使用しましたが、目的を完全に理解したことはありません。 C#でアプリケーションを終了するときにどのような役割を果たしますか?

+2

は、アプリケーションに依存リンクApplication.Exit

チェックを使用するのが最善であると思います。あなたが悪魔を書くなら、0を返します。 Windowsアプリケーションを使用する場合は、メインフォームを閉じます。強制終了は使用しないでください。 – Cynede

+1

可能な複製http://stackoverflow.com/questions/1312885/application-exit-vs-application-exitthread-vs-environment-exit –

+1

@jalalがあなたの右のものかもしれません..しかし、私はそれが重複しているとは言いません..私はすでにあなたのコメントの分前に私のポストにそのリンクを追加しました。重複としてマークしないでください、それは価値があることを願っています。 –

答えて

64

System.Windows.Forms.Application.Exit() - 終了する必要のあるすべてのメッセージポンプに通知し、メッセージが処理された後にすべてのアプリケーションウィンドウを閉じます。このメソッドは、すべてのスレッドで実行中のすべてのメッセージループを停止し、アプリケーションのすべてのウィンドウを閉じます。このメソッドはアプリケーションの強制終了を強制しません。 Exitメソッドは、通常、メッセージループ内から呼び出され、強制的にRunを返します。現在のスレッドのみのメッセージループを終了するには、ExitThreadを呼び出します。これは、WinFormsアプリケーションを実行している場合に使用する呼び出しです。一般的なガイドラインとして、System.Windows.Forms.Application.Runを呼び出した場合はこの呼び出しを使用してください。

System.Environment.Exit(exitCode) - このプロセスを終了し、基になるオペレーティングシステムに指定された終了コードを与えます。この呼び出しでは、SecurityPermissionFlag.UnmanagedCode権限が必要です。そうしないと、SecurityExceptionエラーが発生します。これは、コンソールアプリケーションを実行している場合に使用する呼び出しです。

私はそれが、これはApplication.Exit() vs Application.ExitThread() vs Environment.Exit()http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

+5

'Application.Run'を呼び出す前に唯一の選択肢は' Environment.Exit'で、 'Application.Exit'は効果がないことを明示的に指摘しておきます。 – Carsten

+1

私はログインとメインフォームの2つのフォームを持っています。ログインボタンがクリックされたときに、ログインがクリックされたときにthis.hide()を使用し、メインフォームが開き、そこからフォームが閉じられたらhideフォームが使用され、ログインフォームが再び表示されます。アプリケーションを実行してログインボタンをクリックし、メインフォームを何度も何度も閉じると、ログインフォームのexit(System.Windows.Forms.Application.Exit())ボタンをクリックすると、すべてのログインフォームが表示されます私は隠れた。私は(System.Environment.Exit(0))を使用すると、アプリケーションを閉じて完全に終了します。すべてで私は後で1つが最高だと言うだろう –

16

Application.Exitは、すべてのメッセージポンプに終了する必要があることを通知し、イベントの処理が完了するまで待機してからアプリケーションを終了します。必ずしも強制的にアプリケーションを終了させるわけではありません。

Environment.Exitは、すべてのWindowsアプリケーションに適用できますが、主にコンソールアプリケーションでの使用を想定しています。与えられた終了コードでプロセスを直ちに終了します。

一般的には、WindowsでApplication.Exitを使用する必要があります(私が完了するまで実行Main方法/エントリー・ポイントを聞かせてではなく、コンソールアプリケーションでEnvironment.Exitを呼ぶことを好むが)、フォームアプリケーションとコンソールアプリケーションでEnvironment.Exit

詳細については、MSDNのドキュメントを参照してください。

+0

答えをありがとう。私はProgram.csではなく、別のクラスからアプリケーションを終了する必要があり、コンソールアプリケーションであり、これは素晴らしいです。私はキーワードのリターンを使うこともできると私は信じており、それはMainの実行を終了させるでしょうが、この場合は違いはありません。 – Radmation

0

C#でアプリケーションを終了するときにどのような役割を果たしますか?

他のすべてのアプリケーションと同じです。基本的に彼らは呼び出し元に返されます。開始がiiconのダブルクリックだった場合は無関係です。関連性は、アプリケーションがリターンコードで動作したかどうかを決定するバッチファイルです。あなたがこれを必要とするプログラムを書かない限り、戻りdcodeは無関係です。

しかし、違いは何ですか?

1つは、System.Windows.Forms?アプリケーションの環境1に由来します。機能的には違いがありません。

関連する問題