gpt4 book ai didi

c# - 安全退出控制台应用程序?

转载 作者:行者123 更新时间:2023-11-30 20:54:38 25 4
gpt4 key购买 nike

我有一个将在周末运行的控制台应用程序。当我重新开始工作时,我需要安全地终止它。

它正在运行一个循环并通过移动文件和更新数据库来修改文件。

我假设我不能简单地按 Ctrl-Z 退出它,因为这可能会在处理文件的过程中停止程序?

有没有一种安全的方法让我说按“c”键将我的 runLoop boolean 设置为 false 以便退出我的循环正确还是有更好的方法?

static void Main(string[] args)
{
bool runLoop = true;

while (runLoop)
{
// bunch of code
// moving files, updating database.
}
}

终止此循环并确保当前运行的文件成功完成的安全方法是什么?

最佳答案

您可以轻松地为按下该命令时向您公开的事件添加处理程序,并使用它来发出取消信号:

bool runLoop = true;

ManualResetEvent allDoneEvent = new ManualResetEvent(false);
Console.CancelKeyPress += (s, e) =>
{
runLoop = false;
allDoneEvent.WaitOne();
};

int i = 0;
while (runLoop)
{
Console.WriteLine(i++);
Thread.Sleep(1000); //placeholder for real work
}

//for debugging purposes only
Console.WriteLine();
Console.WriteLine("press any key to exit . . .");
Console.ReadKey(true);

allDoneEvent.Set();

请注意,当该事件处理程序完成时,整个进程将被终止,因此您还需要确保该事件处理程序保持运行,直到程序的其余部分能够正常完成。

关于c# - 安全退出控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18991794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com