web-dev-qa-db-ja.com

C#でコンソールアプリケーションを終了するコマンドは何ですか?

コンソールアプリケーションを終了するためのC#のコマンドは何ですか?

209
XxYo0nixX

Environment.Exit(0);Application.Exitを使うことができます

Environment.Exit(0)はきれいです

264
Nikhil Agrawal

最も適切な方法でのいくつかのオプション:

  1. Program.Mainメソッドからintを返します
  2. 例外を投げ、どこでもそれを処理しないでください(予期しないエラー状況に使用します)
  3. 他の場所で強制的に終了させるために、System.Environment.Exitは移植性がありません。下記を参照してください

読みやすくするために2013年9月に編集

特定の終了コードで戻る:Servyがコメントで指摘しているように、Mainをint戻り型で宣言し、そのようにエラーコードを返すことができます。そのため、Environment.Exit exceptを使う必要は本当にありません。終了コードで終了する必要があり、Mainメソッドでそれを実行することはできません。たぶん、あなたは例外を投げ、未処理の例外がそこに伝播するならばエラーコードをMainに返すことによってそれを避けることができます。アプリケーションがマルチスレッドの場合は、終了コードで適切に終了するためにさらに定型句が必要になる可能性があるので、Environment.Exitを呼び出すだけでよいでしょう。

マルチスレッドアプリケーションを作成する場合でも、Evironment.Exitの使用に対するもう1つのポイントは、再利用性です。 Environment.Exitを無意味にするような環境(Webサーバーで使用される可能性があるライブラリなど)でコードを再利用したい場合、コードは移植できません。私の考えでは、まだ最善の解決策は、メソッドが何らかのエラー/終了状態に達したことを表す例外や戻り値を常に使用することです。そうすれば、どの.NET環境でも、あらゆる種類のアプリケーションで、常に同じコードを使用できます。特に終了コードを返すか、Environment.Exitのように終了する必要があるアプリケーションを作成している場合は、スレッドを最上位レベルでラップし、必要に応じてエラー/例外を処理できます。

92
sinelaw

メイン機能の実行が完了すると、コンソールアプリケーションは終了します。 「リターン」はこれを達成します。

    static void Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine("I'm running!");
            return; //This will exit the console application's running thread
        }
    }

エラーコードを返す場合は、次のようにしてそれを実行できます。これは、最初のスレッドの外部の関数からアクセスできます。

    System.Environment.Exit(-1);
23
Developer

Environment.Exit(0)Application.Exitを使うことができます。

Environment.Exit():このプロセスを終了して、基盤となるオペレーティングシステムに指定された終了コードを渡します。