国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?

這篇具有很好參考價值的文章主要介紹了C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

公司有一個控制臺應(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。
C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?
代碼:

        #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)閉事件。
C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?
代碼:

//注冊窗口關(guān)閉事件
bool bRet = SetConsoleCtrlHandler(cancelHandler, true);

3、效果如下,當(dāng)點(diǎn)擊【x】關(guān)閉窗口時,就會觸發(fā)窗口關(guān)閉事件了。
C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?
會進(jìn)入到這個事件里面:
C#控制臺應(yīng)用程序如何添加窗口關(guān)閉事件?


原文鏈接: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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C# 關(guān)于使用newlife包將webapi接口寄宿于一個控制臺程序、winform程序、wpf程序運(yùn)行

    C# 關(guān)于使用newlife包將webapi接口寄宿于一個控制臺程序、winform程序、wpf程序運(yùn)行

    C# 關(guān)于使用newlife包將webapi接口寄宿于一個控制臺程序、winform程序、wpf程序運(yùn)行 安裝newlife包 Program的Main()函數(shù)源碼 MyController 源碼 MyHttpHandler 源碼 源代碼百度鏈接 鏈接:https://pan.baidu.com/s/15OxTDOBO_y5bFyrzPW3XPw?pwd=sr3c 提取碼:sr3c

    2024年02月15日
    瀏覽(22)
  • C# 控制臺進(jìn)度條

    C# 控制臺進(jìn)度條

    https://github.com/Mpdreamz/shellprogressbar

    2024年01月23日
    瀏覽(33)
  • C# 在控制臺整齊的輸出 DataTable

    C# 在控制臺整齊的輸出 DataTable

    效果: 在?Winform 平臺,可以用 DataGridView 這樣的控件來顯示數(shù)據(jù)庫的表單數(shù)據(jù),但在 C# 控制臺項(xiàng)目中,如果有用到數(shù)據(jù)庫查詢,我們想看看查詢語句的效果,就比較困難了,比如,我隨意寫了一個控制臺輸出,代碼如下: 效果: 在 Navicat 16 for MySQL 軟件中的查詢結(jié)果 由于沒

    2024年02月12日
    瀏覽(95)
  • 淺析 C# 控制臺的 Ctrl+C 是怎么玩的

    淺析 C# 控制臺的 Ctrl+C 是怎么玩的

    上一篇我們聊到了 Console 為什么會卡死,讀過那篇文章的朋友相信對 conhost.exe 有了一個大概的了解,這一篇更進(jìn)一步聊一聊窗口的特殊事件 Ctrl+C 底層流轉(zhuǎn)到底是什么樣的,為了方便講述,讓 chagtgpt 給我生成一段Ctrl+C 的業(yè)務(wù)代碼。 然后簡單跑一下,確認(rèn)代碼沒毛病。 相信很

    2024年02月08日
    瀏覽(19)
  • 淺析 C# Console 控制臺為什么也會卡死

    淺析 C# Console 控制臺為什么也會卡死

    在分析旅程中,總會有幾例控制臺的意外卡死導(dǎo)致的生產(chǎn)事故,有經(jīng)驗(yàn)的朋友都知道,控制臺卡死一般是動了 快速編輯窗口 的緣故,截圖如下: 雖然知道緣由,但一直沒有時間探究底層原理,市面上也沒有對這塊的底層原理介紹,昨天花了點(diǎn)時間簡單探究了下,算是記錄分

    2024年02月08日
    瀏覽(82)
  • VS2022 和 VS2010 C#控制臺輸出 Hello World

    VS2022 和 VS2010 C#控制臺輸出 Hello World

    最后,一定將【 ? 】將解決方案和項(xiàng)目放在同一個目錄中(D)的對勾點(diǎn)上,如上圖。這個小習(xí)慣,對于以后程序的維護(hù)有好處。 Console.WriteLine(\\\"Hello World\\\"); ? 代碼輸入完成以后,可以通過以下3種方法來運(yùn)行。 1 、在菜單欄上選擇 “ 調(diào)試 ”-“ 開始執(zhí)行(不調(diào)試) ” 命令。

    2024年02月06日
    瀏覽(24)
  • 【C#實(shí)戰(zhàn)】控制臺游戲 勇士斗惡龍(3)——營救公主以及結(jié)束界面

    【C#實(shí)戰(zhàn)】控制臺游戲 勇士斗惡龍(3)——營救公主以及結(jié)束界面

    君兮_的個人主頁 即使走的再遠(yuǎn),也勿忘啟程時的初心 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,最近開始正式的步入學(xué)習(xí)游戲開發(fā)的正軌,想要通過寫博客的方式來分享自己學(xué)到的知識和經(jīng)驗(yàn),這就是開設(shè)本專欄的目的。希望這些獨(dú)立的C#小項(xiàng)目能對做游戲的你有所幫助,

    2024年02月09日
    瀏覽(17)
  • 【C#項(xiàng)目實(shí)戰(zhàn)】控制臺游戲勇士斗惡龍(1)——游戲初始設(shè)置以及開始界面

    【C#項(xiàng)目實(shí)戰(zhàn)】控制臺游戲勇士斗惡龍(1)——游戲初始設(shè)置以及開始界面

    君兮_的個人主頁 即使走的再遠(yuǎn),也勿忘啟程時的初心 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,最近開始正式的步入學(xué)習(xí)游戲開發(fā)的正軌,想要通過寫博客的方式來分享自己學(xué)到的知識和經(jīng)驗(yàn),這就是開設(shè)本專欄的目的。希望這些獨(dú)立的C#小項(xiàng)目能對做游戲的你有所幫助,

    2024年02月09日
    瀏覽(21)
  • 騰訊云控制臺沒有“應(yīng)用管理”選項(xiàng)問題解決辦法

    騰訊云控制臺沒有“應(yīng)用管理”選項(xiàng)問題解決辦法

    首先:確定自己選擇的是否為 系統(tǒng)鏡像 選擇個人鏡像則會導(dǎo)致控制臺沒有應(yīng)用管理選項(xiàng) 目前應(yīng)用管理選項(xiàng)只有選擇 應(yīng)用鏡像 的服務(wù)器才有應(yīng)用管理選項(xiàng) ?還需注意的是某些鏡像版本無應(yīng)用鏡像如基于centos7.6的應(yīng)用鏡像 部分應(yīng)用有提供windows系統(tǒng)版本 若登錄輕量應(yīng)用服務(wù)器

    2024年02月15日
    瀏覽(31)
  • 【教程】教你搭建控制臺鏈接區(qū)塊鏈網(wǎng)絡(luò),如何搭建FISCO-BCOS控制臺

    目錄 前言 配置及使用控制臺 第一步. 準(zhǔn)備依賴 第二步. 啟動并使用控制臺 部署及調(diào)用測試HelloWorld合約 第一步. 編寫HelloWorld合約 第二步. 部署HelloWorld合約 第三步. 調(diào)用HelloWorld合約 隨著區(qū)塊鏈的發(fā)展,目前國內(nèi)也掀起了一陣區(qū)塊鏈的熱潮,無論是金融、信任、交易、溯源等

    2024年02月10日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包