/// <summary> /// Console interrupt handler /// </summary> /// <param name="ctrl">Console control code</param> /// <returns>true if interrupt was handled, false otherwise</returns> private static bool ConsoleHandler(ConsoleInterrupt.CtrlTypes ctrl) { // Only handle ctrl+c if (ctrl != ConsoleInterrupt.CtrlTypes.CtrlCEvent) { return(false); } // Detach this handler ConsoleInterrupt.SetConsoleCtrlHandler(ConsoleHandler, false); // Cancel running tasks s_cancellationTokenSource.Cancel(); // Yes, we handled the interrupt return(true); }
private static void Main(string[] args) { // Capture ctrl+c to stop process ConsoleInterrupt.SetConsoleCtrlHandler(ConsoleHandler, true); s_cancellationTokenSource = new CancellationTokenSource(); var loggers = new List <ILogger> { new FileLogger("trace.log") { Level = 4 }, new FileLogger("debug.log") { Level = 3 }, new FileLogger("info.log") { Level = 2 }, new FileLogger("error.log") { Level = 1 }, new ConsoleLogger { Level = 4 } }; var logger = new MultiLogger(loggers); // RunEmulator(logger); RunValidator(logger, args); }