C#控制台应用程序如何添加窗口关闭事件?
公司有一个控制台应用程序,在关闭控制台应用程序窗口前,想处理一下业务逻辑。还有比如误操作关闭了,或者像消息队列启动了发送消息提醒,那关闭了窗口代表控制台应用销毁了,也需要发送消息通知。那这个时候添加关闭窗口事件就派上用场了。
很多小伙伴问,有没有办法像WinForm一样,对窗体关闭退出事件进行控制呢?默认是没有的,我们可以自己写。按照下面的步骤来操作吧:
1、在【Program.cs】文件的Program类中写如下代码。 添加一个委托HandlerAppClose,就是把函数的指针传递给系统API函数SetConsoleCtrlHandler。
代码:
#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方法中去注册窗口关闭事件。
代码:
//注册窗口关闭事件
bool bRet = SetConsoleCtrlHandler(cancelHandler, true);
3、效果如下,当点击【x】关闭窗口时,就会触发窗口关闭事件了。
会进入到这个事件里面:
版权声明:本文为原创文章,版权归 [西瓜程序猿] 所有,转载请注明出处,有任何疑问请私信咨询。
原文链接:https://www.cnblogs.com/kimiliucn/p/17616757.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)