Console.CancelKeyPress Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
public:
static event ConsoleCancelEventHandler ^ CancelKeyPress;
[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;
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static event ConsoleCancelEventHandler? CancelKeyPress;
public static event ConsoleCancelEventHandler CancelKeyPress;
[<System.Runtime.Versioning.UnsupportedOSPlatform("android")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.CancelKeyPress : ConsoleCancelEventHandler
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.CancelKeyPress : ConsoleCancelEventHandler
member this.CancelKeyPress : ConsoleCancelEventHandler
Public Shared Custom Event CancelKeyPress As ConsoleCancelEventHandler
Event Type
- Atributy
Příklady
Následující příklad ukazuje, jak CancelKeyPress se událost používá. Když stisknete Ctrl+C, operace čtení se přeruší a vyvolá se obslužná rutina myHandler události. Při vstupu do obslužné rutiny ConsoleCancelEventArgs.Cancel události je falsevlastnost , což znamená, že aktuální proces se ukončí při ukončení obslužné rutiny události. Obslužná rutina události však nastaví ConsoleCancelEventArgs.Cancel vlastnost na true, což znamená, že proces nebude ukončen a operace čtení bude pokračovat.
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
Poznámky
Tato událost se používá ve spojení s System.ConsoleCancelEventHandler a System.ConsoleCancelEventArgs. Tato CancelKeyPress událost umožňuje konzolové aplikaci zachytit signál Ctrl+C, aby obslužná rutina události mohla rozhodnout, jestli se má pokračovat v provádění nebo ukončení. Další informace o zpracování událostí naleznete v tématu Zpracování a vyvolávání událostí.
Když uživatel stiskne kombinaci kláves Ctrl+C nebo Ctrl+Break, CancelKeyPress aktivuje se událost a spustí se obslužná rutina události aplikace ConsoleCancelEventHandler . Obslužná rutina události se předává ConsoleCancelEventArgs objekt, který má dvě užitečné vlastnosti:
SpecialKey, který vám umožní určit, jestli byla obslužná rutina vyvolána v důsledku stisknutí kombinace kláves Ctrl+C (hodnota vlastnosti je ConsoleSpecialKey.ControlC) nebo Ctrl+Break (hodnota vlastnosti je ConsoleSpecialKey.ControlBreak).
Cancel, což vám umožní určit, jak má aplikace reagovat na uživatele stisknutím Ctrl+C nebo Ctrl+Break. Ve výchozím nastavení je
falsevlastnost , Cancel která způsobí ukončení provádění programu při ukončení obslužné rutiny události. Změna jeho vlastnosti tak, abytrueurčuje, že aplikace by měla pokračovat v provádění.
Návod
Pokud má vaše aplikace jednoduché požadavky, můžete místo této události použít TreatControlCAsInput vlastnost. Nastavením této vlastnosti na falsehodnotu můžete zajistit, aby se aplikace vždy ukončila, pokud uživatel stiskne ctrl+C. Když ji nastavíte na true, můžete zajistit, aby stisknutí kombinace kláves Ctrl+C aplikaci neukončila.
Obslužná rutina události pro tuto událost se spustí ve vlákně fondu vláken.