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

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

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

應(yīng)用場景

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

處理方法

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

不過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)閉");//按控制臺關(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#使用分部類設(shè)計(jì)實(shí)現(xiàn)一個(gè)計(jì)算器

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

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

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

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

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

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

    C#操作word的方法示例

    這篇文章主要介紹了C#操作word的方法,結(jié)合實(shí)例形式分析了C#針對word文檔的讀取、寫入、保存等相關(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á)式過濾html標(biāo)簽

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

    最近在開發(fā)一個(gè)項(xiàng)目,其中有需求要求我們把一段html轉(zhuǎn)換為一般文本返回,使用正則表達(dá)式是明智的選擇,下面小編給介紹下C#使用正則表達(dá)式過濾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ù),通過一個(gè)自定義函數(shù)形式實(shí)例分析了C#操作字符串實(shí)現(xiàn)補(bǔ)零操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評論

南涧| 磐石市| 三穗县| 蒲江县| 南开区| 凌源市| 新竹市| 化德县| 开鲁县| 衡水市| 石河子市| 林芝县| 嵊州市| 泾源县| 胶州市| 麻阳| 昔阳县| 新昌县| 汶上县| 娄底市| 沾化县| 沂水县| 商河县| 海盐县| 武川县| 沧州市| 棋牌| 加查县| 阜南县| 准格尔旗| 吕梁市| 桃园县| 白玉县| 株洲市| 林西县| 油尖旺区| 班玛县| 西华县| 佳木斯市| 保定市| 得荣县|