最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例

 更新時(shí)間:2014年09月25日 09:27:45   投稿:junjie  
這篇文章主要介紹了C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例,本文中的2個(gè)關(guān)閉事件是指Ctrl+C事件和窗口的關(guān)閉按鈕事件,需要的朋友可以參考下

應(yīng)用場(chǎng)景

我們開(kāi)發(fā)的控制臺(tái)應(yīng)用,在運(yùn)行階段很有可能被用戶(hù)Ctrl+C終止或是被用戶(hù)直接關(guān)閉。如果我們不希望用戶(hù)通過(guò)Ctrl+C終止我們的程序,就需要對(duì)Ctrl+C或關(guān)閉事件作處理。

處理方法

在.net平臺(tái)下Console類(lèi)有個(gè)CancelKeyPress事件可以處理Ctrl+C,不過(guò)對(duì)于直接關(guān)閉控制臺(tái)應(yīng)用,這種處理就無(wú)能為力了。

不過(guò)Windows API中有個(gè)SetConsoleCtrlHandler函數(shù)可以處理這兩種關(guān)閉事件。

C#處理代碼如下:

復(fù)制代碼 代碼如下:

static class Program
{
    public delegate bool ControlCtrlDelegate(int CtrlType);
    [DllImport("kernel32.dll")]
    private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerRoutine, bool Add);
    private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerRoutine);

    public static bool HandlerRoutine(int CtrlType)
    {
        switch (CtrlType)
        {
            case 0:
                Console.WriteLine("0工具被強(qiáng)制關(guān)閉"); //Ctrl+C關(guān)閉 
                break;
            case 2:
                Console.WriteLine("2工具被強(qiáng)制關(guān)閉");//按控制臺(tái)關(guān)閉按鈕關(guān)閉 
                break;
        }
        Console.ReadLine();
        return false;
    } 

    /// <summary>
    /// 應(yīng)用程序的主入口點(diǎn)。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        SetConsoleCtrlHandler(cancelHandler, true);
        Console.ReadLine();
    }
}

相關(guān)文章

  • C#使用分部類(lèi)設(shè)計(jì)實(shí)現(xiàn)一個(gè)計(jì)算器

    C#使用分部類(lèi)設(shè)計(jì)實(shí)現(xiàn)一個(gè)計(jì)算器

    分部類(lèi)是C#4.5中的一個(gè)新特性,它的出現(xiàn)使得程序的結(jié)構(gòu)更加合理,代碼組織更加緊密,本文將使用分部類(lèi)設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器,感興趣的小伙伴可以了解下
    2024-02-02
  • C#中面向?qū)ο缶幊虣C(jī)制之繼承學(xué)習(xí)筆記

    C#中面向?qū)ο缶幊虣C(jī)制之繼承學(xué)習(xí)筆記

    這篇文章主要介紹了C#中面向?qū)ο缶幊虣C(jī)制之繼承學(xué)習(xí)筆記,本文給出一個(gè)簡(jiǎn)單子實(shí)例講解C#中的繼承,并講解了一些C#繼承的知識(shí)技巧,需要的朋友可以參考下
    2015-01-01
  • C#調(diào)用usb攝像頭的實(shí)現(xiàn)方法

    C#調(diào)用usb攝像頭的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#調(diào)用usb攝像頭的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C#操作word的方法示例

    C#操作word的方法示例

    這篇文章主要介紹了C#操作word的方法,結(jié)合實(shí)例形式分析了C#針對(duì)word文檔的讀取、寫(xiě)入、保存等相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C#連接Excel驅(qū)動(dòng)與示例代碼分享

    C#連接Excel驅(qū)動(dòng)與示例代碼分享

    這篇文章主要介紹了C#連接Excel驅(qū)動(dòng)與示例代碼,需要的朋友可以參考下
    2014-02-02
  • C#中的尾遞歸與Continuation詳解

    C#中的尾遞歸與Continuation詳解

    這篇文章主要介紹了C#中的尾遞歸與Continuation詳解,本文講解了遞歸與尾遞歸、尾遞歸與Continuation、Continuation的改進(jìn)等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • C#實(shí)現(xiàn)帶百分比的進(jìn)度條功能示例

    C#實(shí)現(xiàn)帶百分比的進(jìn)度條功能示例

    這篇文章主要介紹了C#實(shí)現(xiàn)帶百分比的進(jìn)度條功能,分析了帶百分比進(jìn)度條的功能需求并結(jié)合實(shí)例形式給出了具體實(shí)現(xiàn)步驟與相關(guān)操作方法,需要的朋友可以參考下
    2017-05-05
  • C#使用正則表達(dá)式過(guò)濾html標(biāo)簽

    C#使用正則表達(dá)式過(guò)濾html標(biāo)簽

    最近在開(kāi)發(fā)一個(gè)項(xiàng)目,其中有需求要求我們把一段html轉(zhuǎn)換為一般文本返回,使用正則表達(dá)式是明智的選擇,下面小編給介紹下C#使用正則表達(dá)式過(guò)濾html標(biāo)簽,需要的朋友參考下
    2016-08-08
  • C#備忘錄模式(Memento Pattern)實(shí)例教程

    C#備忘錄模式(Memento Pattern)實(shí)例教程

    這篇文章主要介紹了C#備忘錄模式(Memento Pattern),以一個(gè)支持回退操作的例子講述了C#備忘模式的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-09-09
  • C#自定義字符串補(bǔ)0函數(shù)實(shí)例

    C#自定義字符串補(bǔ)0函數(shù)實(shí)例

    這篇文章主要介紹了C#自定義字符串補(bǔ)0函數(shù),通過(guò)一個(gè)自定義函數(shù)形式實(shí)例分析了C#操作字符串實(shí)現(xiàn)補(bǔ)零操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

阜新| 湘乡市| 苍山县| 中卫市| 临武县| 丰城市| 宁晋县| 香港 | 中江县| 凯里市| 南皮县| 吉首市| 巩留县| 泰来县| 濮阳市| 麻城市| 巴青县| 洪湖市| 墨脱县| 巨鹿县| 吉木乃县| 莱西市| 邻水| 洮南市| 黄石市| 镶黄旗| 任丘市| 灵山县| 福安市| 大连市| 离岛区| 灵川县| 梧州市| 谢通门县| 华池县| 台湾省| 监利县| 新竹市| 漳平市| 吴桥县| 沽源县|