Console.CancelKeyPress Gebeurtenis
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
public:
static event ConsoleCancelEventHandler ^ CancelKeyPress;
public static event ConsoleCancelEventHandler CancelKeyPress;
member this.CancelKeyPress : ConsoleCancelEventHandler
Public Shared Custom Event CancelKeyPress As ConsoleCancelEventHandler
Gebeurtenistype
Voorbeelden
In het volgende voorbeeld ziet u hoe de CancelKeyPress gebeurtenis wordt gebruikt. Wanneer u op Ctrl+C drukt, wordt de leesbewerking onderbroken en wordt de myHandler gebeurtenis-handler aangeroepen. Bij invoer van de gebeurtenis-handler is falsede ConsoleCancelEventArgs.Cancel eigenschap, wat betekent dat het huidige proces wordt beëindigd wanneer de gebeurtenis-handler wordt beëindigd. De gebeurtenis-handler stelt de ConsoleCancelEventArgs.Cancel eigenschap trueechter in op , wat betekent dat het proces niet wordt beëindigd en de leesbewerking wordt hervat.
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
open System
let myHandler sender (args: ConsoleCancelEventArgs) =
printfn "\nThe read operation has been interrupted."
printfn $" Key pressed: {args.SpecialKey}"
printfn $" Cancel property: {args.Cancel}"
// Set the Cancel property to true to prevent the process from terminating.
printfn "Setting the Cancel property to true..."
args.Cancel <- true
// Announce the new value of the Cancel property.
printfn $" Cancel property: {args.Cancel}"
printfn "The read operation will resume...\n"
// Establish an event handler to process key press events.
Console.CancelKeyPress.AddHandler(ConsoleCancelEventHandler myHandler)
let mutable quit = false
while not quit do
printf "Press any key, or 'X' to quit, or "
printfn "CTRL+C to interrupt the read operation:"
// Start a console read operation. Do not display the input.
let cki = Console.ReadKey true
// Announce the name of the key that was pressed .
printfn $" Key pressed: {cki.Key}\n"
// Exit if the user pressed the 'X' key.
if cki.Key = ConsoleKey.X then
quit <- true
// 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
Class Sample
Public Shared Sub Main()
Dim cki As ConsoleKeyInfo
Console.Clear()
' Establish an event handler to process key press events.
AddHandler Console.CancelKeyPress, AddressOf 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}{vbCrLf}")
' Exit if the user pressed the 'X' key.
If cki.Key = ConsoleKey.X Then Exit While
End While
End Sub
Protected Shared Sub myHandler(ByVal sender As Object, _
ByVal args As ConsoleCancelEventArgs)
Console.WriteLine($"{vbCrLf}The 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...{vbCrLf}")
End Sub
End Class
' The example diplays 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
Opmerkingen
Deze gebeurtenis wordt gebruikt in combinatie met System.ConsoleCancelEventHandler en System.ConsoleCancelEventArgs. Met CancelKeyPress de gebeurtenis kan een consoletoepassing het Ctrl+C-signaal onderscheppen, zodat de gebeurtenis-handler kan beslissen of de uitvoering of beëindiging moet worden voortgezet. Zie Gebeurtenissen verwerken en genereren voor meer informatie over het afhandelen van gebeurtenissen.
Wanneer de gebruiker op Ctrl+C of Ctrl+Break drukt, wordt de CancelKeyPress gebeurtenis geactiveerd en wordt de gebeurtenis-handler van de toepassing ConsoleCancelEventHandler uitgevoerd. De gebeurtenis-handler wordt doorgegeven aan een ConsoleCancelEventArgs object met twee nuttige eigenschappen:
SpecialKey, waarmee u kunt bepalen of de handler is aangeroepen als gevolg van de gebruiker die op Ctrl+C drukt (de eigenschapswaarde is ConsoleSpecialKey.ControlC) of Ctrl+Break (de eigenschapswaarde is ConsoleSpecialKey.ControlBreak).
Cancel, waarmee u kunt bepalen hoe uw toepassing moet reageren op de gebruiker die op Ctrl+C of Ctrl+Break drukt. De eigenschap is
falsestandaardCancel, waardoor de uitvoering van het programma wordt beëindigd wanneer de gebeurtenis-handler wordt afgesloten. Als u de eigenschap wijzigt om aan tetruegeven dat de toepassing moet blijven worden uitgevoerd.
Tip
Als uw toepassing eenvoudige vereisten heeft, kunt u de TreatControlCAsInput eigenschap gebruiken in plaats van deze gebeurtenis. Door deze eigenschap in te falsestellen, kunt u ervoor zorgen dat uw toepassing altijd wordt afgesloten als de gebruiker op Ctrl+C drukt. Door dit in te truestellen, kunt u ervoor zorgen dat u op Ctrl+C drukt de toepassing niet beëindigt.
De gebeurtenis-handler voor deze gebeurtenis wordt uitgevoerd op een thread-pool.