zoukankan      html  css  js  c++  java
  • C#控制台程序中处理2个关闭事件的代码实例

    我们开发的控制台应用,在运行阶段很有可能被用户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();
        }
    }
  • 相关阅读:
    SVN中Revert changes from this revision 跟Revert to this revision
    bootstrap中如何使input中的小图标获得点击事件
    基于Bootstrap使用jQuery实现输入框组input-group的添加与删除-改进版
    MVC4 Controller 与 WebApi 的 Session 传值问
    MVC Razor与javascript混编(js中嵌入razor)
    Asp.net mvc怎么在razor里写js代码
    MVC后台数据赋值给前端JS对象
    ASP.NET MVC自定义验证Authorize Attribute(包含cookie helper)
    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
    【记录】【solr】solr7.2.1原子更新
  • 原文地址:https://www.cnblogs.com/xianyin05/p/8371380.html
Copyright © 2011-2022 走看看