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

咱们开发的控制台应用,在运行阶段颇有可能被用户Ctrl+C终止或是被用户直接关闭。若是咱们不但愿用户经过Ctrl+C终止咱们的程序,就须要对Ctrl+C或关闭事件做处理。函数

处理方法工具

在.net平台下Console类有个CancelKeyPress事件能够处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。spa

不过Windows API中有个SetConsoleCtrlHandler函数能够处理这两种关闭事件。.net

C#处理代码以下:code

导入命名空间blog

using System.Runtime.InteropServices;事件

处理方法ci

在.net平台下Console类有个CancelKeyPress事件能够处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了。开发

不过Windows API中有个SetConsoleCtrlHandler函数能够处理这两种关闭事件。string

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();
     }
}
相关文章
相关标签/搜索