6

私はC#が初めてなので、C++で使用していたさまざまなものをGoogleで検索しました。それらの 1 つは、コンソール アプリでの一時停止の可能性です。

多くの人が次のようなさまざまな方法を提案しました

System.Console.ReadKey(true);
System.Console.WriteLine();

他のものは、他のものよりも効率的であるはずの自作関数を示しさえしました。そして、どちらがより良い解決策であるかを判断するのは本当に頭痛の種です.

C# がそれらをどのように解釈するか、どの方法が最も効率的であるかについて、誰かが例を挙げてもらえますか?

4

5 に答える 5

2

私は通常、コンソールを一時停止するためdoに とを使用します。while次に、必要に応じて、特定のキーを押すとコンソールが再開されます。

do
{

/*  while (!Console.KeyAvailable) //Continue if pressing a Key press is not available in the input stream
    {
        //Do Something While Paused
    } 
*/

} while (Console.ReadKey(true).Key != ConsoleKey.Escape); //Resume if Escape was pressed

これを のままにしておくと、一時停止中に何もせず//Do Something While Pausedにキーが押された場合にのみ、コンソールが再開されます。Esc

ただし、コンソール アプリケーションを再開したくない場合は、while (true);代わりに使用できます。while (Console.ReadKey(true).Key != ConsoleKey.Escape);

do
{
    //break; //Resume
} while (true); //Continue while True (Always True)

注意: コンソール アプリケーションは一時停止do { } while (Condition);します。これは、何かを実行していることをコンソール アプリケーションに伝えているだけだからです。そのため、コンソール アプリケーションは操作が実行されるまで待機します。その後、何もすることがないときは通常閉じます。
注意:whileはループに使用されます。そのため、条件が false にならないとアプリケーションは終了しません。

ありがとう、
これがお役に立てば幸いです:)

于 2012-12-01T17:49:58.170 に答える
2

組み込みの「一時停止」コマンドについて話している場合は、いつでも呼び出すことができます-醜いですが。これが私が使用するものです:

static void Pause()
{
    Console.WriteLine();
    var pauseProc = Process.Start(
        new ProcessStartInfo()
            {
                FileName = "cmd",
                Arguments = "/C pause",
                UseShellExecute = false
            });
    pauseProc.WaitForExit();
}

通常は次のようになります。

if (Environment.UserInteractive())
    Pause();

お役に立てれば。

于 2013-06-07T10:06:18.890 に答える
1

または、パットが行ったことを使用できますが、引数の代わりに

Arguments = "/C pause"

あなたが使用することができます

Arguments = "/C TIMEOUT /t 4 /nobreak > NUL"

ここで、数値 4 は、残りのプログラムを実行する前にコンソールが一時停止する秒数です。

そして、関数全体は

static void Pause(int sec)
    {
        Console.WriteLine();
        var pauseProc = Process.Start(
            new ProcessStartInfo()
            {
                FileName = "cmd",
                Arguments = "/C TIMEOUT /t " + sec + " /nobreak > NUL",
                UseShellExecute = false
            });
        pauseProc.WaitForExit();
    }

そして、一時停止する秒数を指定して Pause 関数で呼び出します。

Pause(4);

それが役に立てば幸い。

于 2014-07-23T08:22:53.077 に答える
-1

「Console.ReadLine();」と書くことができます これも目的のために。

于 2015-08-13T18:51:28.150 に答える