2010-06-16 19 views
5

Tengo una aplicación de consola, y quiero capturar Control-C y apagar con gracia.Aplicación de consola C#: ¿Impide que se imprima Control-C?

Tengo el siguiente código:

Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) => 
{ 
    Logger.Log("Control+C hit. Shutting down."); 
    resetEvent.Set(); 
}); 

Y las ventanas de salida de muestra:

6/16/2010 3:24:34 PM: Control + C golpe. Apagando.
^ C

¿Hay una manera de evitar que el carácter de control-c ^C aparezcan? No es un gran acuerdo , pero por alguna razón me obsesionaré porque soy anal así.

Respuesta

3

Al ser una aplicación de consola que yo usaría Environment.Exit para señalar que la aplicación está saliendo y esto manera de detener la impresión de ^C.

Incluso podría proporcionar un código de error específico para simbolizar que el usuario presionó CTRL + C.

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e) 
{ 
    Console.WriteLine("Control+C hit. Shutting down."); 

    Environment.Exit(-1); 
} 
0

Si bien esto no es necesariamente una solución que desea implementar, sí que evita que el^C se muestre:

static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e) 
{ 
    Console.WriteLine("Control+C hit. Shutting down.");  
    Process.GetCurrentProcess().Kill(); 
} 
2

Esto debería funcionar ...

Console.CancelKeyPress += new ConsoleCancelEventHandler((o, e) => 
{ 
    Console.WriteLine("Control+C hit. Shutting down."); 
    Environment.Exit(0); 
}); 

Console.ReadLine(); 
Cuestiones relacionadas