6

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

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

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

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

谁能举例说明 C# 如何解释它们以及哪种方式应该是最有效的?

4

5 回答 5

7

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

  1. ctrl+F5

或如 Rajesh 建议的那样

  1. Console.ReadKey() //pauses for any key
  2. Console.ReadLine() //pauses for enter key
于 2016-08-10T16:49:25.353 回答
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 回答
2

我通常使用doandwhile来暂停控制台。然后,如有必要,如果您按特定键,控制台应恢复。

例子

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

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

于 2012-12-01T17:49:58.170 回答
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);

希望能帮助到你。

于 2014-07-23T08:22:53.077 回答
-1

你可以写“Console.ReadLine();” 这也是有目的的。

于 2015-08-13T18:51:28.150 回答