c#控制台程序如何处理二个关闭事件?

发布时间:2019-10-22编辑:脚本学堂
c#控制台程序中关闭事件的方法,在c#控制台程序中处理2个关闭事件(指ctrl+c事件和窗口的关闭按钮事件)的代码,c#编程中事件操作实例,实现程序的强制关闭功能。

c#控制台程序关闭事件的方法

一、应用场景
控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭。
如果不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理。

二、处理方法
在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。
不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件。

三、代码:
 

复制代码 代码示例:
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();
}
}