公司有一個控制台應用程式,在關閉控制台應用程式視窗前,想處理一下業務邏輯。還有比如誤操作關閉了,或者像消息隊列啟動了發送消息提醒,那關閉了視窗代表控制台應用銷毀了,也需要發送消息通知。那這個時候添加關閉視窗事件就派上用場了。 ...
公司有一個控制台應用程式,在關閉控制台應用程式視窗前,想處理一下業務邏輯。還有比如誤操作關閉了,或者像消息隊列啟動了發送消息提醒,那關閉了視窗代表控制台應用銷毀了,也需要發送消息通知。那這個時候添加關閉視窗事件就派上用場了。
很多小伙伴問,有沒有辦法像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
版權聲明:本文為原創文章,版權歸 [西瓜程式猿] 所有,轉載請註明出處,有任何疑問請私信咨詢。
原文鏈接:https://www.cnblogs.com/kimiliucn/p/17616757.html