C# 单击关闭按钮后如何取消控制台关闭

C# 单击关闭按钮后如何取消控制台关闭,c#,.net,console,event-handling,C#,.net,Console,Event Handling,我已经尝试了所有方法,类似的答案已经告诉我了。都不管用 因此,我需要捕获控制台应用程序上的close button click事件,询问用户是否真的想关闭它。我让它工作了,是的。问题是,控制台正在关闭,因为我无法告诉它不要这样做 我已经尝试了AppDomain.CurrentDomain.ProcessExit+=new System.EventHandler(CurrentDomain\u ProcessExit)

我已经尝试了所有方法,类似的答案已经告诉我了。都不管用

因此,我需要捕获控制台应用程序上的close button click事件,询问用户是否真的想关闭它。我让它工作了,是的。问题是,控制台正在关闭,因为我无法告诉它不要这样做

我已经尝试了AppDomain.CurrentDomain.ProcessExit+=new System.EventHandler(CurrentDomain\u ProcessExit) 如何取消.NET应用程序中的关闭事件

欢迎任何帮助

我现在的代码:

枚举CtrlType
{
CTRL\u C\u事件=0,
CTRL\u BREAK\u事件=1,
CTRL\u CLOSE\u事件=2,
CTRL\u注销\u事件=5,
CTRL\u关机\u事件=6
}
私有委托bool EventHandler(CtrlType sig);
[DllImport(“内核32”)]
私有静态外部bool setConsoletrlHandler(EventHandler,bool add);
专用静态布尔处理程序(CtrlType sig)
{
DialogResult dr=MessageBox.Show(“Seguro que quieres cerrar la aplicación?”,“Confirmación de cierre”,MessageBox buttons.YesNo);
交换机(dr)
{
案例对话框结果。是:
CurrentDomain_ProcessExit(新对象(),新取消事件参数());
打破
案例对话框结果。否:
返回false;
违约:
打破
}
返回true;
}
#端区
#区域方法
静态void Main(字符串[]参数)
{
SetConsoleCtrlHandler(新事件处理程序,true);
Console.Title=GlobalConfig.Title;
Console.Clear();
init();
}

我认为,单击No/Cancel返回true应该停止引发关闭应用程序的默认处理程序


当控制台进程接收到任何控制信号时,其 处理程序函数是在最后注册、第一次调用的基础上调用的 直到其中一个处理程序返回TRUE如果没有任何处理程序 返回TRUE,默认处理程序被称为


它适用于Ctrl+C的情况,但在我通过X(关闭)按钮关闭它时不起作用。