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();
}
}