控制台暂停的方式

时间:2012-12-01 17:36:42

标签: c# console

由于我是C#的新手,我在谷歌搜索了我曾经在C ++中使用的各种东西。其中一个是在控制台应用程序中暂停的可能性。

很多人提出了不同的方法,比如

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

其他人甚至展示了自制功能,这些功能“应该”比其他功能更有效。 确定哪一个是更好的解决方案真的很头疼。

任何人都可以举例说明C#如何解释它们以及哪种方式应该最有效?

5 个答案:

答案 0 :(得分:5)

使用以下任何一种方法运行程序:

  1. ctrl + F5
  2. 或者像Rajesh建议的那样

    1. Console.ReadKey() //pauses for any key
    2. Console.ReadLine() //pauses for enter key

答案 1 :(得分:2)

我通常使用dowhile暂停控制台。然后,如果需要,如果按特定键,控制台应该恢复。

示例

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用于循环。因此,除非条件变为假,否则应用程序不会关闭。

谢谢, 我希望你觉得这很有帮助:)

答案 2 :(得分: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();

希望这有帮助。

答案 3 :(得分:1)

或者您可以使用Pat所做的但是对于Arguments而不是

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(4);

希望它有所帮助。

答案 4 :(得分:-1)

你可以写“Console.ReadLine();”这也适用于pupose。