C#处理控制台关闭事件
2014-01-03 12:07
316 查看
应用场景
我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭。如果我们不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理。处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
[code]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | static class Program { public delegate bool ControlCtrlDelegate(int CtrlType); [DllImport("kernel32.dll")] private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerRoutine, bool Add); private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerRoutine); public static bool HandlerRoutine(int CtrlType) { switch (CtrlType) { case 0: Console.WriteLine("0工具被强制关闭"); //Ctrl+C关闭 break; case 2: Console.WriteLine("2工具被强制关闭");//按控制台关闭按钮关闭 break; } Console.ReadLine(); return false; } /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { SetConsoleCtrlHandler(cancelHandler, true); Console.ReadLine(); } } |
相关文章推荐
- C#控制台程序中处理2个关闭事件的代码实例
- C#处理控制台关闭事件
- C#控制台程序中处理2个关闭事件的代码实例
- C#注册控件处理程序(SetConsoleCtrlHandler)函数示例 控制台关闭事件改写
- C#捕获控制台(console)关闭事件
- 蛋疼的让C#控制台程序(Console)像窗体(Winform)一样(关闭,托盘图标,事件响应,手动退出等)
- [No000090]C#捕获控制台(console)关闭事件及响应cmd快捷键
- C# 控制台捕获关闭事件的代码
- 蛋疼的让C#控制台程序(Console)像窗体(Winform)一样(关闭,托盘图标,事件响应,手动退出等)
- c# 从网页获取内容及socket.udp 通信,控制台关闭消息及事件委托
- C#中事件处理的个人体会
- 浅析C#的事件处理和自定义事件 (转载)
- C#操作串口,带异常处理,解决端口占用时打开串口出现异常错误,串口关闭时发送数据报错
- C#开发微信门户及应用(21)-微信企业号的消息和事件的接收处理及解密
- 捕获浏览器关闭、刷新事件 并进行处理
- c#禁止窗口关闭方法(重写关闭事件)
- c#消息队列,事件处理(java)
- 浅析Java与C#的事件处理机制
- C#中的事件定义与处理
- C#窗口事件处理初探