Ler em inglês

Compartilhar via


Console.CancelKeyPress Evento

Definição

Importante

Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.

Ocorre quando a tecla modificadora Control (Ctrl) e a tecla do console C (C) ou a tecla Break são pressionadas simultaneamente (Ctrl + C ou Ctrl + Break).

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

Exemplos

O exemplo a seguir demonstra como o CancelKeyPress evento é usado. Quando você pressiona Ctrl+C, a operação de leitura é interrompida e o myHandler manipulador de eventos é invocado. Após a entrada para o manipulador de eventos, a propriedade é false, o ConsoleCancelEventArgs.Cancel que significa que o processo atual será encerrado quando o manipulador de eventos for encerrado. No entanto, o manipulador de eventos define a ConsoleCancelEventArgs.Cancel propriedade como true, o que significa que o processo não será encerrado e a operação de leitura será retomada.

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

Comentários

Esse evento é usado em conjunto com System.ConsoleCancelEventHandler e System.ConsoleCancelEventArgs. O CancelKeyPress evento permite que um aplicativo de console intercepte o sinal Ctrl+C para que o manipulador de eventos possa decidir se deseja continuar executando ou encerrando. Para obter mais informações sobre como lidar com eventos, consulte Manipulando e levantando eventos.

Quando o usuário pressiona Ctrl+C ou Ctrl+Break, o CancelKeyPress evento é acionado e o manipulador de eventos do ConsoleCancelEventHandler aplicativo é executado. O manipulador de eventos é passado por um ConsoleCancelEventArgs objeto que tem duas propriedades úteis:

  • SpecialKey, que permite determinar se o manipulador foi invocado como resultado do usuário pressionando Ctrl+C (o valor da propriedade é ConsoleSpecialKey.ControlC) ou Ctrl+Break (o valor da propriedade é ConsoleSpecialKey.ControlBreak).

  • Cancel, que permite determinar como seu aplicativo deve responder ao usuário pressionando Ctrl+C ou Ctrl+Break. Por padrão, a Cancel propriedade é false, que faz com que a execução do programa seja encerrada quando o manipulador de eventos for encerrado. Alterar sua propriedade para true especifica que o aplicativo deve continuar a ser executado.

Dica

Se o aplicativo tiver requisitos simples, você poderá usar a TreatControlCAsInput propriedade em vez desse evento. Definindo essa propriedade como false, você pode garantir que seu aplicativo sempre saia se o usuário pressionar Ctrl+C. Ao defini-lo como true, você pode garantir que pressionar Ctrl+C não encerrará o aplicativo.

O manipulador de eventos para esse evento é executado em um thread de pool de threads.

Aplica-se a

Produto Versões
.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

Confira também