Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Console.CancelKeyPress (Evento)

Se produce cuando la tecla modificadora Control (Ctrl) y la tecla de consola ConsoleKey.C (C) o la tecla Interrumpir se presionan simultáneamente (Ctrl+C o Ctrl+Inter).

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

public static event ConsoleCancelEventHandler CancelKeyPress

Este evento se utiliza junto con System.ConsoleCancelEventHandler y System.ConsoleCancelEventArgs. El evento de CancelKeyPress permite a una aplicación de consola para interceptar la señal de Ctrl+C de modo que el controlador de eventos puede decidir si continúa ejecutándose o finalizar. Para obtener más información sobre control de eventos, vea Utilizar eventos.

Cuando el usuario presione Ctrl+C o Ctrl+Break, se desencadena el evento de CancelKeyPress y se ejecuta el controlador de eventos de ConsoleCancelEventHandler de la aplicación. Pasan al controlador de eventos recibe un objeto de ConsoleCancelEventArgs con dos propiedades útiles:

  • SpecialKey , que permite determinar si invocaran el controlador como resultado del usuario que presionaba Ctrl+C (el valor de propiedad es ConsoleSpecialKey.ControlC) o Ctrl+Break (el valor de propiedad es ConsoleSpecialKey.ControlBreak).

  • Cancel , que permite determinar cómo a la aplicación debe responder al usuario que presione Ctrl+C o Ctrl+Break. De forma predeterminada, la propiedad de Cancel es false, que hace que la ejecución del programa para finalizar cuando salga del controlador de eventos. Cambiando su propiedad a true especifica que la aplicación debe seguir ejecutándose.

SugerenciaSugerencia

Si los requisitos de la aplicación son sencillos, puede utilizar la propiedad TreatControlCAsInput en lugar de este evento. Estableciendo esta propiedad en false, puede asegurarse de que los resultados de la aplicación siempre si el usuario presione Ctrl+C. Estableciéndolo en true, puede garantizar que presione Ctrl+C no finalizará la aplicación.

El controlador de eventos para este evento se ejecuta en un subproceso del grupo de subprocesos.

En el siguiente ejemplo se muestra cómo utilizar el evento CancelKeyPress. Cuando se presione Ctrl+C, se interrumpe la operación de lectura y se invoca el controlador de eventos de myHandler . A la entrada al controlador de eventos, la propiedad de ConsoleCancelEventArgs.Cancel es false, lo que significa que el proceso actual terminará cuando el controlador de eventos finaliza. Sin embargo, el controlador de eventos establece la propiedad de ConsoleCancelEventArgs.Cancel a true, lo que significa que el proceso no finalizará y la operación de lectura reanudará.


using System;

class Sample 
{
    public static void Main()
    {
        ConsoleKeyInfo cki;

        Console.Clear();

        // Establish an event handler to process key press events.
        Console.CancelKeyPress += new ConsoleCancelEventHandler(myHandler);
        while (true) {
            Console.Write("Press any key, or 'X' to quit, or ");
            Console.WriteLine("CTRL+C to interrupt the read operation:");

            // Start a console read operation. Do not display the input.
            cki = Console.ReadKey(true);

            // Announce the name of the key that was pressed .
            Console.WriteLine("  Key pressed: {0}\n", cki.Key);

            // Exit if the user pressed the 'X' key.
            if (cki.Key == ConsoleKey.X) break;
        }
    }

    protected static void myHandler(object sender, ConsoleCancelEventArgs args)
    {
        Console.WriteLine("\nThe read operation has been interrupted.");

        Console.WriteLine("  Key pressed: {0}", args.SpecialKey);

        Console.WriteLine("  Cancel property: {0}", args.Cancel);

        // Set the Cancel property to true to prevent the process from terminating.
        Console.WriteLine("Setting the Cancel property to true...");
        args.Cancel = true;

        // Announce the new value of the Cancel property.
        Console.WriteLine("  Cancel property: {0}", args.Cancel);
        Console.WriteLine("The read operation will resume...\n");
    }
}
// The example displays output similar to the follwoing:
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//      Key pressed: J
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//      Key pressed: Enter
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//    
//    The read operation has been interrupted.
//      Key pressed: ControlC
//      Cancel property: False
//    Setting the Cancel property to true...
//      Cancel property: True
//    The read operation will resume...
//    
//      Key pressed: Q
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//      Key pressed: X


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft