猿问
如何在C#控制台应用程序中捕获ctrl-c(SIGINT)
我希望能够在C#控制台应用程序中捕获
CTRL
+
C
,以便可以在退出前进行一些清理。最好的方法是什么?
慕田峪4524236
浏览 1370
回答 3
3回答
HUH函数
该Console.CancelKeyPress事件被用于此目的。使用方法如下:public static void Main(string[] args){ Console.CancelKeyPress += delegate { // call methods to clean up }; while (true) {}}当用户按Ctrl + C时,将运行委托中的代码,并退出程序。这使您可以通过调用necessairy方法来执行清理。请注意,执行委托后没有任何代码。在其他情况下,这也无法解决。例如,如果程序当前正在执行无法立即停止的重要计算。在这种情况下,正确的策略可能是在计算完成后告诉程序退出。以下代码给出了如何实现的示例:class MainClass{ private static bool keepRunning = true; public static void Main(string[] args) { Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) { e.Cancel = true; MainClass.keepRunning = false; }; while (MainClass.keepRunning) { // Do your work in here, in small chunks. // If you literally just want to wait until ctrl-c, // not doing anything, see the answer using set-reset events. } Console.WriteLine("exited gracefully"); }}此代码与第一个示例之间的差异e.Cancel是设置为true,这意味着在委托之后继续执行。如果运行,程序将等待用户按Ctrl +C。在这种情况下,keepRunning变量会更改值,从而导致while循环退出。这是使程序正常退出的一种方式。
0
0
0
随时随地看视频
慕课网APP
相关分类
C#
typedef入门问题
1 回答
.NET
.net 中 字符串含有超链接,如何给超链接自动加上a标签?
1 回答
请问.net 中用jquery传值安全吗?
2 回答
我要回答