码迷,mamicode.com
首页 > Windows程序 > 详细

C#控制台程序中处理2个关闭事件的代码实例

时间:2017-11-29 14:46:44      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:小程序   enter   程序   alt   parent   ati   系统   ctrl   变量   


应用场景

我们开发的控制台应用,在运行阶段很有可能被用户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个关闭事件的代码实例

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23468.html






相关内容

C#控制台程序中处理2个关闭事件的代码实例

标签:小程序   enter   程序   alt   parent   ati   系统   ctrl   变量   

原文地址:http://www.cnblogs.com/paobuke/p/7920019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!