英語で読む

次の方法で共有


ConsoleCancelEventArgs.Cancel プロパティ

定義

Control 修飾子キーと C コンソール キー (Ctrl + C) または Ctrl + Break キーを押した場合に現在のプロセスが終了するかどうかを示す値を取得または設定します。 現在のプロセスを終了する既定値は false です。

C#
public bool Cancel { get; set; }

プロパティ値

イベント ハンドラーの終了時に現在のプロセスを再開する場合は、true。現在のプロセスを終了する場合は、false。 既定値は false です。現在のプロセスは、イベント ハンドラーが返されると終了します。 true の場合、現在のプロセスが継続されます。

次の例では、 プロパティを使用してイベントを Cancel 処理する方法を示します。

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

注釈

イベントのCancelハンドラーが呼び出されると、 プロパティは に自動的にCancelKeyPress初期化falseされます。 イベント ハンドラーが Cancel 終了したときの プロパティの値によって、現在のプロセスが再開されるか終了するかが決まります。

Ctrl + C キーを押した後の設定操作では、 を指定 true して、イベント ハンドラーが終了したときに現在のプロセスを再開する必要があることを示すか false 、現在のプロセスを終了する必要があることを示します。

注意 (呼び出し元)

.NET Framework 3.5 と .NET Framework 4 では、Ctrl キーを押しながら Break キーを押してイベントが呼び出された場合CancelKeyPressに プロパティを にtrue設定Cancelしようとすると、例外がInvalidOperationExceptionスローされました。 .NET Framework 4.5 では、ユーザーが Cancel Ctrl + Break キーを押してアプリケーションの終了を取り消した後に、 プロパティを にtrue設定できます。

適用対象

製品 バージョン
.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

こちらもご覧ください