Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Console.CancelKeyPress, événement

Se produit lorsque la touche de modification (Ctrl) Control (CTRL) et la touche de console (C) ConsoleKey.C ou la touche d'interruption sont utilisées simultanément (Ctrl+C ou Ctrl+ATTN).

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

public static event ConsoleCancelEventHandler CancelKeyPress

Cet événement est utilisé conjointement à System.ConsoleCancelEventHandler et System.ConsoleCancelEventArgs. L'événement CancelKeyPress permet à un gestionnaire d'événement d'intercepter le signal CTRL+C et de décider de poursuivre l'exécution ou de la terminer. Pour plus d'informations sur la gestion des événements, consultez Consommation d'événements.

Lorsque l'utilisateur appuie sur Ctrl+C ou Ctrl+Pause, l'événement CancelKeyPress est déclenché et le gestionnaire d'événements ConsoleCancelEventHandler de l'application est exécutée. Le gestionnaire d'événements est passé à un objet ConsoleCancelEventArgs possédant deux propriétés utiles :

  • SpecialKey , qui vous permet de déterminer si le gestionnaire a été appelé après que l'utilisateur ait appuyé sur Ctrl+C (la valeur de la propriété est ConsoleSpecialKey.ControlC) ou Ctrl+Pause (la valeur de la propriété est ConsoleSpecialKey.ControlBreak).

  • Cancel , qui permet de déterminer comment votre application doit répondre aux commandes Ctrl+C ou Ctrl+Pause. Par défaut, la propriété Cancel est false, ce qui provoque l'arrêt de l'exécution du programme lorsque le gestionnaire d'événements s'arrête. Modification sa valeur en true spécifie que l'application doit continuer à fonctionner.

ConseilConseil

Si votre application présente des exigences simples, vous pouvez utiliser la propriété TreatControlCAsInput à la place de cet événement. En définissant cette propriété à la valeur false, vous pouvez garantir que votre application s'arrête toujours si l'utilisateur appuie sur Ctrl+C. En lui attribuant true, vous pouvez garantir qu'appuyer sur Ctrl+C ne terminera pas l'application.

Le gestionnaire d'événements pour cet événement est exécuté sur un thread du pool.

L'exemple suivant montre comment utiliser l'événement CancelKeyPress. Lorsque vous appuyez sur Ctrl+C, l'opération de lecture est interrompue et le gestionnaire d'événements myHandler est appelé. À l'entrée au gestionnaire d'événements, la propriété ConsoleCancelEventArgs.Cancel est false, ce qui signifie que le processus actuel se termine lorsque le gestionnaire d'événements se termine. Toutefois, le gestionnaire d'événements définit la propriété ConsoleCancelEventArgs.Cancel à la valeur true, ce qui signifie que le processus ne revient pas et l'opération de lecture continue.


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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 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 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft