首页 >后端开发 >C++ >如何在 C# 控制台应用程序中优雅地处理 Ctrl C 中断?

如何在 C# 控制台应用程序中优雅地处理 Ctrl C 中断?

Barbara Streisand
Barbara Streisand原创
2024-12-27 09:38:13998浏览

How Can I Gracefully Handle Ctrl C Interrupts in a C# Console Application?

在 C# 控制台应用程序中捕获 Ctrl C (SIGINT)

通过按 Ctrl C ( SIGINT),Console.CancelKeyPress 事件可以是

使用 Console.CancelKeyPress 事件:

当用户按下 Ctrl C 时,会引发 Console.CancelKeyPress 事件。通过向此事件注册事件处理程序,代码可以在程序终止之前执行。

Console.CancelKeyPress += delegate {
    // Perform cleanup operations
};

当按下 Ctrl C 时,程序中的代码将执行事件处理程序,从而完成基本的清理任务。需要注意的是,委托之后的任何代码都不会被执行。

处理复杂场景:

对于立即终止任务不切实际的情况,可以采用不同的方法。以下代码演示了如何告诉程序在计算完成后正常退出:

bool keepRunning = true;

Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) {
    e.Cancel = true;
    keepRunning = false;
};

while (keepRunning) {
    // Perform work in small chunks
}

通过将 e.Cancel 设置为 true,在事件处理程序之后继续执行。当按下 Ctrl C 时,keepRunning 变量被设置为 false,导致程序正常退出。

以上是如何在 C# 控制台应用程序中优雅地处理 Ctrl C 中断?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn