Нашел такое решение: private static void Main(string[] args)
{
signalHandler += HandleConsoleSignal;
SetSignalHandler(signalHandler, true);
Console.ReadKey();
}
internal delegate void SignalHandler(ConsoleSignal consoleSignal);
[DllImport("Kernel32", EntryPoint = "SetConsoleCtrlHandler")]
public static extern bool SetSignalHandler(SignalHandler handler, bool add);
/// <summary>
/// Обработчик закрытия консольного приложения
/// </summary>
private static SignalHandler signalHandler;
// событие завершение работы консольного приложения
private static void HandleConsoleSignal(ConsoleSignal consoleSignal)
{
Console.WriteLine("Выход");
}
internal enum ConsoleSignal { CtrlC = 0, CtrlBreak = 1, Close = 2, LogOff = 5, Shutdown = 6 }
но тут Kernel32, не хотел бы его подключать ..