Ler en inglés

Compartir por


Console.CancelKeyPress Evento

Definición

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

C#
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static event ConsoleCancelEventHandler? CancelKeyPress;
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static event ConsoleCancelEventHandler? CancelKeyPress;
C#
public static event ConsoleCancelEventHandler CancelKeyPress;

Tipo de evento

Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo se usa el CancelKeyPress evento . Al presionar Ctrl+C, se interrumpe la operación de lectura y se invoca el myHandler controlador de eventos. Tras la entrada al controlador de eventos, la ConsoleCancelEventArgs.Cancel propiedad es false, lo que significa que el proceso actual finalizará cuando finalice el controlador de eventos. Sin embargo, el controlador de eventos establece la ConsoleCancelEventArgs.Cancel propiedad trueen , lo que significa que el proceso no finalizará y la operación de lectura se reanudará.

C#
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: {cki.Key}\n");

            // 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: {args.SpecialKey}");

        Console.WriteLine($"  Cancel property: {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: {args.Cancel}");
        Console.WriteLine("The read operation will resume...\n");
    }
}
// The example displays output similar to the following:
//    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

Comentarios

Este evento se usa junto con System.ConsoleCancelEventHandler y System.ConsoleCancelEventArgs. El CancelKeyPress evento permite a una aplicación de consola interceptar la señal Ctrl+C para que el controlador de eventos pueda decidir si desea continuar ejecutando o finalizar. Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.

Cuando el usuario presiona Ctrl+C o Ctrl+Break, se desencadena el CancelKeyPress evento y se ejecuta el controlador de eventos de ConsoleCancelEventHandler la aplicación. El controlador de eventos se pasa a un ConsoleCancelEventArgs objeto que tiene dos propiedades útiles:

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

  • Cancel, que le permite determinar cómo debe responder la aplicación al usuario presionando Ctrl+C o Ctrl+Interrumpir. De forma predeterminada, la propiedad es false, lo que hace que la Cancel ejecución del programa finalice cuando se cierra el controlador de eventos. Cambiar su propiedad a true especifica que la aplicación debe continuar ejecutándose.

Suxestión

Si la aplicación tiene requisitos simples, puede usar la TreatControlCAsInput propiedad en lugar de este evento. Al establecer esta propiedad falseen , puede asegurarse de que la aplicación siempre salga si el usuario presiona Ctrl+C. Al establecerlo trueen , puede asegurarse de que presionar Ctrl+C no finalizará la aplicación.

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

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

Consulte también