Leggere in inglese

Condividi tramite


Console.CancelKeyPress Evento

Definizione

Si verifica quando il tasto di modifica Control (CTRL) e il tasto della console C (C) o il tasto INTERR vengono premuti contemporaneamente (CTRL+C o CTRL+INTERR).

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 evento

Attributi

Esempio

Nell'esempio seguente viene illustrato come viene usato l'evento CancelKeyPress . Quando si preme CTRL+C, l'operazione di lettura viene interrotta e viene richiamato il myHandler gestore eventi. Dopo aver immesso il gestore eventi, la ConsoleCancelEventArgs.Cancel proprietà è false, che significa che il processo corrente verrà terminato al termine del gestore eventi. Tuttavia, il gestore eventi imposta la ConsoleCancelEventArgs.Cancel proprietà su true, il che significa che il processo non verrà terminato e l'operazione di lettura riprenderà.

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

Commenti

Questo evento viene usato insieme a System.ConsoleCancelEventHandler e System.ConsoleCancelEventArgs. L'evento CancelKeyPress consente a un'applicazione console di intercettare il segnale CTRL+C in modo che il gestore eventi possa decidere se continuare a eseguire o terminare. Per ulteriori informazioni sulla gestione degli eventi, consultare gestione e generazione di eventi.

Quando l'utente preme CTRL+C o CTRL+Break, viene attivato l'evento CancelKeyPress e viene eseguito il gestore eventi dell'applicazione ConsoleCancelEventHandler . Il gestore eventi viene passato un ConsoleCancelEventArgs oggetto con due proprietà utili:

  • SpecialKey, che consente di determinare se il gestore è stato richiamato come risultato della pressione dell'utente CTRL+C (il valore della proprietà è ) o CTRL+Break (il valore della proprietà è ConsoleSpecialKey.ControlCConsoleSpecialKey.ControlBreak).

  • Cancel, che consente di determinare come l'applicazione deve rispondere all'utente premendo CTRL+C o CTRL+BREAK. Per impostazione predefinita, la proprietà è false, che causa l'interruzione Cancel dell'esecuzione del programma quando il gestore eventi termina. Modifica della proprietà per true specificare che l'applicazione deve continuare a essere eseguita.

Suggerimento

Se l'applicazione ha requisiti semplici, è possibile usare la TreatControlCAsInput proprietà anziché questo evento. Impostando questa proprietà su false, è possibile assicurarsi che l'applicazione venga sempre chiusa se l'utente preme CTRL+C. Impostandolo su true, è possibile assicurarsi che premendo CTRL+C non termina l'applicazione.

Il gestore eventi per questo evento viene eseguito in un thread del pool di thread.

Si applica a

Prodotto Versioni
.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

Vedi anche