C#控制台程序中处理2个关闭事件的代码实例
2016-04-07 14:58
483 查看
我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭。如果我们不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理。
处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
导入命名空间
using System.Runtime.InteropServices;
处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
导入命名空间
using System.Runtime.InteropServices;
处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。
C#处理代码如下:
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#分隔符
- C#未将对象引用设置到对象的事例原因及解决办法
- C#中Thread.Join()的理解
- C# date format 使用C#格式化时间
- C#原生加密方法: System.Security.Cryptography.CryptoStream DataSet加密解密
- C# 制作ZIP压缩包
- C#第5周实验
- C#中Thread与ThreadPool的比较
- C#各个文件后缀含义
- c# 基础知识 2
- C#引用类库时出现黄色三角加感叹号的处理
- C#+vs2013+windows10配置emgu技巧
- C# winform 弹出确认消息框
- C#换机器后调用dll失败提示无法加载DLL找不到指定的模块
- C# 之 user32函数库
- C# DataGridView导出Excel的两种经典方法
- C#-带有历史信息的菜单
- C#点击按钮后其他按钮排列类似导航菜单
- C#更改groupbox边框颜色
- C#创建不规则窗体-图片