C#控制台程序中处理2个关闭事件的代码实例
应用场景
我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭。如果我们不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理。
处理方法
在.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#控制台程序中处理2个关闭事件的代码实例
- C#控制台程序中处理2个关闭事件的代码实例
- C#控制台程序中处理2个关闭事件的代码实例
- C#控制台程序中处理2个关闭事件的代码实例
- 通过文档事件处理程序引入JavaScript脚本代码实例
- [原创]Swing技巧.1:用最少的代码设置frame的默认关闭事件
- NSString / NSMutableString 字符串处理,常用代码 (实例)
- Android-NDK开发之基础--Android JNI实例代码(四)-- JNI中的异常处理实例代码
- Javascript处理DOM元素事件实现代码
- Qt5事件处理及实例
- ASP.NET打开新页面而不关闭原来的页面 实例代码
- java坦克大战0.2(添加关闭窗口的事件处理)
- 对象事件与处理程序代码进行关联的几种方式
- PHP处理SQL脚本文件导入到MySQL的代码实例
- 基于jQuery实现弹出可关闭遮罩提示框实例代码
- JQuery的自定义事件代码,触发,绑定简单实例
- 通过代码学习C#&.NET——委托使用(事件、定时处理)
- UITouch 触摸事件处理(实例)
- 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用