控制台应用程序关闭事件

我们开发的控制台应用,在运行阶段很有可能被用户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#处理代码如下:

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();
     }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值