始终保持控制台打开的最佳方式

时间:2015-07-22 23:54:58

标签: c#

你好我想知道让控制台永远打开的最佳方法是什么?我想要最快的方式,最稳定的方式,基本上是永远保持开放的最佳方式,直到我关闭它。

我最近一直使用下面的代码,但有人说虽然循环不好?或类似的东西,或在其中存储东西是不是很好?我基本上只是希望你的家伙建议总体最佳方法是什么?或者一些最好的方式......

while (true) //in Program.cs in void Main
    Console.ReadKey();

3 个答案:

答案 0 :(得分:5)

执行一个简单的控制台应用程序,它将一直打开,直到执行结束。如果您关闭控制台,则关闭应用程序。如果您不需要控制台,它将保持打开状态,直到应用程序完成运行(因此没有循环或任何东西),当您准备好使用它时,它仍然会在那里等着您。

编辑: 您可能想要考虑执行Service应用程序。你不会有任何控制台运行,应用程序将站在后面,没有人会看到一个黑匣子和错误关闭它的风险。然后,您可以使用服务面板将其停止。您服务的核心将是一个等待信号的简单线程(玩家连接)。所以你的应用程序24/7运行没有任何问题,可以很容易地关闭。

答案 1 :(得分:1)

我发现循环没问题。我会有一个命令,可以输入以从文本输入关闭窗口。类似的东西:

string s = "";
while (s != "kill")
    s = Console.ReadLine();

有些时候while(true)循环可能很危险,因为它们总会运行,但我觉得while循环很好。我已将此代码用于服务器等。这对我来说从来都不是问题。

答案 2 :(得分:0)

所以在评论中你说:

  

我希望每周7天每天24小时开放,直到我点击“X”

在这种情况下,请执行以下操作:

Console.WriteLine("Press X to stop");
do
{
    while (!Console.KeyAvailable)
    {
        // Do something
    }
} while (Console.ReadKey(true).Key != ConsoleKey.X);

Console.WriteLine("Stopped");

正如其他人指出的那样,while(true)将是一场表现难堪。

也许(没有足够的信息知道)你想要做的是在循环之前启动一个线程,并在循环之后杀死它。这样你的函数就可以与循环并行运行,但你可以随时控制它(按X键)。要以干净的方式执行此操作,请按照example at the bottom of the page

进行操作

......或蛮力:

Console.WriteLine("Running the process");
System.Threading.Thread workerThread = new System.Threading.Thread(MyFunction);
workerThread.Start();

Console.WriteLine("Press X to stop");
do
{
    while (!Console.KeyAvailable)
    {
        // Do something
    }
} while (Console.ReadKey(true).Key != ConsoleKey.X);

workerThread.Abort();

Console.WriteLine("Stopped");