C#控制台应用程序如何添加窗口关闭事件?

公司有一个控制台应用程序,在关闭控制台应用程序窗口前,想处理一下业务逻辑。还有比如误操作关闭了,或者像消息队列启动了发送消息提醒,那关闭了窗口代表控制台应用销毁了,也需要发送消息通知。那这个时候添加关闭窗口事件就派上用场了。


很多小伙伴问,有没有办法像WinForm一样,对窗体关闭退出事件进行控制呢?默认是没有的,我们可以自己写。按照下面的步骤来操作吧:


1、在【Program.cs】文件的Program类中写如下代码。 添加一个委托HandlerAppClose,就是把函数的指针传递给系统API函数SetConsoleCtrlHandler。
image.png
代码:

        #region 激活关闭窗口事件
        public delegate bool ControlCtrlDelegate(int CtrlType);
        [DllImport("kernel32.dll")]
        private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerAppClose, bool Add);
        private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerAppClose);

        /// <summary>
        /// 关闭窗口时的事件
        /// </summary>
        /// <param name="CtrlType"></param>
        /// <returns></returns>
        static bool HandlerAppClose(int CtrlType)
        {
            Console.WriteLine("关闭窗口事件被激活");
            Console.WriteLine("do something...");
            return false;
        }

        #endregion

2、然后在Program类的Main方法中去注册窗口关闭事件。
image.png
代码:

//注册窗口关闭事件
bool bRet = SetConsoleCtrlHandler(cancelHandler, true);

3、效果如下,当点击【x】关闭窗口时,就会触发窗口关闭事件了。
image.png
会进入到这个事件里面:
image.png


原文链接:https://www.cnblogs.com/kimiliucn/p/17616757.html文章来源地址https://www.uudwc.com/A/6zB1X/

原文地址:https://www.cnblogs.com/kimiliucn/archive/2023/08/09/17616757.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年09月18日 00:56
从浅入深了解.NET Core MVC 2.x全面教程【第二章】
下一篇 2023年09月18日 01:01