web-dev-qa-db-ja.com

コンソールのアプリケーションを閉じるコマンド?

ユーザーがメニューオプションを選択したら、コンソールを閉じる必要があります。

close()を使用してみましたが、うまくいきませんでした。

これどうやってするの?

71
ale

Environment.ExitおよびApplication.Exit

Environment.Exit(0)はクリーンです。

http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

149
Priyank

閉じるということは、コンソールアプリの現在のインスタンスを閉じたいのですか、それともアプリケーションプロセスを終了させたいのですか?すべての重要な終了コードを見逃した:

Environment.Exit(0);

または、フォームの現在のインスタンスを閉じるには:

this.Close();

便利な link

25
Robert Northard

これを試すことができます

Application.Exit();
6
namco
 //How to start another application from the current application
 Process runProg = new Process();
 runProg.StartInfo.FileName = pathToFile; //the path of the application
 runProg.StartInfo.Arguments = genArgs; //any arguments you want to pass
 runProg.StartInfo.CreateNoWindow = true;
 runProg.Start();

 //How to end the same application from the current application
 int IDstring = System.Convert.ToInt32(runProg.Id.ToString());
 Process tempProc = Process.GetProcessById(IDstring);
 tempProc.CloseMainWindow();
 tempProc.WaitForExit();
3
user5328792

そのため、アプリケーションを突然終了または終了させたいとは言わなかったので、別のオプションとして、おそらく応答ループをエレガントに終わらせることができます。 (ユーザーの指示を待つwhileループがあると仮定しています。これは、今日書いたプロジェクトのコードです。

        Console.WriteLine("College File Processor");
        Console.WriteLine("*************************************");
        Console.WriteLine("(H)elp");
        Console.WriteLine("Process (W)orkouts");
        Console.WriteLine("Process (I)nterviews");
        Console.WriteLine("Process (P)ro Days");
        Console.WriteLine("(S)tart Processing");
        Console.WriteLine("E(x)it");
        Console.WriteLine("*************************************");

        string response = "";
        string videotype = "";
        bool starting = false;
        bool exiting = false;

        response = Console.ReadLine();

        while ( response != "" )
        {
            switch ( response  )
            {
                case "H":
                case "h":
                    DisplayHelp();
                    break;

                case "W":
                case "w":
                    Console.WriteLine("Video Type set to Workout");
                    videotype = "W";
                    break;

                case "I":
                case "i":
                    Console.WriteLine("Video Type set to Interview");
                    videotype = "I";
                    break;

                case "P":
                case "p":
                    Console.WriteLine("Video Type set to Pro Day");
                    videotype = "P";
                    break;

                case "S":
                case "s":
                    if ( videotype == "" )
                    {
                        Console.WriteLine("Please Select Video Type Before Starting");
                    }
                    else
                    {
                        Console.WriteLine("Starting...");
                        starting = true;
                    }
                    break;

                case "E":
                case "e":
                    Console.WriteLine("Good Bye!");
                    System.Threading.Thread.Sleep(100);
                    exiting = true;
                    break;
            }

            if ( starting || exiting)
            {
                break;
            }
            else
            {
                response = Console.ReadLine();
            }
        }

        if ( starting )
        {
            ProcessFiles();
        }
0
Keith Aymar