What's wrong with this code #7?
This time, I'll present a runnable program. The ConsoleCtrl class is designed to intercept CTRL-C and, for testing purposes, will exit after it gets 10 of them. Or after a little over 27 hours.
What's wrong with this code?
using System;
using System.Threading;
using System.Runtime.InteropServices;
public class ConsoleCtrl
{
public enum ConsoleEvent
{
CTRL_C = 0, // From wincom.h
CTRL_BREAK = 1,
CTRL_CLOSE = 2,
CTRL_LOGOFF = 5,
CTRL_SHUTDOWN = 6
}
public delegate void ControlEventHandler(ConsoleEvent consoleEvent);
public event ControlEventHandler ControlEvent;
public ConsoleCtrl()
{
SetConsoleCtrlHandler(new ControlEventHandler(Handler), true);
}
private void Handler(ConsoleEvent consoleEvent)
{
if (ControlEvent != null)
ControlEvent(consoleEvent);
}
[DllImport("kernel32.dll")]
static extern bool SetConsoleCtrlHandler(ControlEventHandler e, bool add);
}
public class Program
{
static int count = 0;
public static void Main()
{
ConsoleCtrl consoleCtrl = new ConsoleCtrl();
consoleCtrl.ControlEvent += new ConsoleCtrl.ControlEventHandler(Logger);
Thread.Sleep(100000);
}
private static void Logger(ConsoleCtrl.ConsoleEvent consoleEvent)
{
Console.WriteLine(consoleEvent);
count++;
if (count == 10)
{
Environment.Exit(0);
}
}
}