程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#掌握台法式中處置2個封閉事宜的代碼實例

C#掌握台法式中處置2個封閉事宜的代碼實例

編輯:C#入門知識

C#掌握台法式中處置2個封閉事宜的代碼實例。本站提示廣大學習愛好者:(C#掌握台法式中處置2個封閉事宜的代碼實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#掌握台法式中處置2個封閉事宜的代碼實例正文


運用場景

我們開辟的掌握台運用,在運轉階段很有能夠被用戶Ctrl+C終止或是被用戶直接封閉。假如我們不願望用戶經由過程Ctrl+C終止我們的法式,就須要對Ctrl+C或封閉事宜作處置。

處置辦法

在.net平台下Console類有個CancelKeyPress事宜可以處置Ctrl+C,不外關於直接封閉掌握台運用,這類處置就力所不及了。

不外Windows API中有個SetConsoleCtrlHandler函數可以處置這兩種封閉事宜。

C#處置代碼以下:


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對象被強迫封閉"); //Ctrl+C封閉 
                break;
            case 2:
                Console.WriteLine("2對象被強迫封閉");//按掌握台封閉按鈕封閉 
                break;
        }
        Console.ReadLine();
        return false;
    } 

    /// <summary>
    /// 運用法式的主進口點。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        SetConsoleCtrlHandler(cancelHandler, true);
        Console.ReadLine();
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved