公司有一個控制臺應(yīng)用程序,在關(guān)閉控制臺應(yīng)用程序窗口前,想處理一下業(yè)務(wù)邏輯。還有比如誤操作關(guān)閉了,或者像消息隊(duì)列啟動了發(fā)送消息提醒,那關(guān)閉了窗口代表控制臺應(yīng)用銷毀了,也需要發(fā)送消息通知。那這個時候添加關(guān)閉窗口事件就派上用場了。
很多小伙伴問,有沒有辦法像WinForm一樣,對窗體關(guān)閉退出事件進(jìn)行控制呢?默認(rèn)是沒有的,我們可以自己寫。按照下面的步驟來操作吧:
1、在【Program.cs】文件的Program類中寫如下代碼。 添加一個委托HandlerAppClose,就是把函數(shù)的指針傳遞給系統(tǒng)API函數(shù)SetConsoleCtrlHandler。
代碼:
#region 激活關(guān)閉窗口事件
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>
/// 關(guān)閉窗口時的事件
/// </summary>
/// <param name="CtrlType"></param>
/// <returns></returns>
static bool HandlerAppClose(int CtrlType)
{
Console.WriteLine("關(guān)閉窗口事件被激活");
Console.WriteLine("do something...");
return false;
}
#endregion
2、然后在Program類的Main方法中去注冊窗口關(guān)閉事件。
代碼:
//注冊窗口關(guān)閉事件
bool bRet = SetConsoleCtrlHandler(cancelHandler, true);
3、效果如下,當(dāng)點(diǎn)擊【x】關(guān)閉窗口時,就會觸發(fā)窗口關(guān)閉事件了。
會進(jìn)入到這個事件里面:文章來源:http://www.zghlxwxcb.cn/news/detail-635178.html
原文鏈接:https://www.cnblogs.com/kimiliucn/p/17616757.html文章來源地址http://www.zghlxwxcb.cn/news/detail-635178.html
到了這里,關(guān)于C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!