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

这篇具有很好参考价值的文章主要介绍了C#控制台应用程序如何添加窗口关闭事件?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


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


1、在【Program.cs】文件的Program类中写如下代码。 添加一个委托HandlerAppClose,就是把函数的指针传递给系统API函数SetConsoleCtrlHandler。
C#控制台应用程序如何添加窗口关闭事件?
代码:

        #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方法中去注册窗口关闭事件。
C#控制台应用程序如何添加窗口关闭事件?
代码:

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

3、效果如下,当点击【x】关闭窗口时,就会触发窗口关闭事件了。
C#控制台应用程序如何添加窗口关闭事件?
会进入到这个事件里面:
C#控制台应用程序如何添加窗口关闭事件?


原文链接:https://www.cnblogs.com/kimiliucn/p/17616757.html文章来源地址https://www.toymoban.com/news/detail-635178.html

到了这里,关于C#控制台应用程序如何添加窗口关闭事件?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

领支付宝红包 赞助服务器费用

相关文章

  • C# 关于使用newlife包将webapi接口寄宿于一个控制台程序、winform程序、wpf程序运行

    C# 关于使用newlife包将webapi接口寄宿于一个控制台程序、winform程序、wpf程序运行 安装newlife包 Program的Main()函数源码 MyController 源码 MyHttpHandler 源码 源代码百度链接 链接:https://pan.baidu.com/s/15OxTDOBO_y5bFyrzPW3XPw?pwd=sr3c 提取码:sr3c

    2024年02月15日
    浏览(51)
  • C# 控制台进度条

    https://github.com/Mpdreamz/shellprogressbar

    2024年01月23日
    浏览(76)
  • C# 在控制台整齐的输出 DataTable

    效果: 在 Winform 平台,可以用 DataGridView 这样的控件来显示数据库的表单数据,但在 C# 控制台项目中,如果有用到数据库查询,我们想看看查询语句的效果,就比较困难了,比如,我随意写了一个控制台输出,代码如下: 效果: 在 Navicat 16 for MySQL 软件中的查询结果 由于没

    2024年02月12日
    浏览(64)
  • 浅析 C# 控制台的 Ctrl+C 是怎么玩的

    上一篇我们聊到了 Console 为什么会卡死,读过那篇文章的朋友相信对 conhost.exe 有了一个大概的了解,这一篇更进一步聊一聊窗口的特殊事件 Ctrl+C 底层流转到底是什么样的,为了方便讲述,让 chagtgpt 给我生成一段Ctrl+C 的业务代码。 然后简单跑一下,确认代码没毛病。 相信很

    2024年02月08日
    浏览(42)
  • 浅析 C# Console 控制台为什么也会卡死

    在分析旅程中,总会有几例控制台的意外卡死导致的生产事故,有经验的朋友都知道,控制台卡死一般是动了 快速编辑窗口 的缘故,截图如下: 虽然知道缘由,但一直没有时间探究底层原理,市面上也没有对这块的底层原理介绍,昨天花了点时间简单探究了下,算是记录分

    2024年02月08日
    浏览(87)
  • VS2022 和 VS2010 C#控制台输出 Hello World

    最后,一定将【 ✔ 】将解决方案和项目放在同一个目录中(D)的对勾点上,如上图。这个小习惯,对于以后程序的维护有好处。 Console.WriteLine(\\\"Hello World\\\");   代码输入完成以后,可以通过以下3种方法来运行。 1 、在菜单栏上选择 “ 调试 ”-“ 开始执行(不调试) ” 命令。

    2024年02月06日
    浏览(49)
  • 【C#实战】控制台游戏 勇士斗恶龙(3)——营救公主以及结束界面

    君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,最近开始正式的步入学习游戏开发的正轨,想要通过写博客的方式来分享自己学到的知识和经验,这就是开设本专栏的目的。希望这些独立的C#小项目能对做游戏的你有所帮助,

    2024年02月09日
    浏览(51)
  • 【C#项目实战】控制台游戏勇士斗恶龙(1)——游戏初始设置以及开始界面

    君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,最近开始正式的步入学习游戏开发的正轨,想要通过写博客的方式来分享自己学到的知识和经验,这就是开设本专栏的目的。希望这些独立的C#小项目能对做游戏的你有所帮助,

    2024年02月09日
    浏览(54)
  • 腾讯云控制台没有“应用管理”选项问题解决办法

    首先:确定自己选择的是否为 系统镜像 选择个人镜像则会导致控制台没有应用管理选项 目前应用管理选项只有选择 应用镜像 的服务器才有应用管理选项  还需注意的是某些镜像版本无应用镜像如基于centos7.6的应用镜像 部分应用有提供windows系统版本 若登录轻量应用服务器

    2024年02月15日
    浏览(43)
  • 【教程】教你搭建控制台链接区块链网络,如何搭建FISCO-BCOS控制台

    目录 前言 配置及使用控制台 第一步. 准备依赖 第二步. 启动并使用控制台 部署及调用测试HelloWorld合约 第一步. 编写HelloWorld合约 第二步. 部署HelloWorld合约 第三步. 调用HelloWorld合约 随着区块链的发展,目前国内也掀起了一阵区块链的热潮,无论是金融、信任、交易、溯源等

    2024年02月10日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包