ホームページ >バックエンド開発 >C++ >C# コンソール アプリケーションで Ctrl C 割り込みを適切に処理するにはどうすればよいですか?

C# コンソール アプリケーションで Ctrl C 割り込みを適切に処理するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-30 20:52:14449ブラウズ

How Can I Gracefully Handle Ctrl C Interrupts in C# Console Applications?

C# コンソール アプリケーションでの Ctrl C (SIGINT) の処理

C# では、Ctrl C (SIGINT) をトラップすると、正常に終了する前に必要なクリーンアップが可能になります。コンソールアプリケーション。 Console.CancelKeyPress イベントは、この中断を処理する手段を提供します。

Console.CancelKeyPress の使用

次のコードは、CancelKeyPress イベントの使用方法を示しています。

public static void Main(string[] args)
{
    Console.CancelKeyPress += delegate {
        // Perform clean-up actions
    };

    while (true) {}
}

ユーザーが Ctrl C を押すと、デリゲート コードが実行されます。

特定の使用例

計算の即時停止が望ましくないシナリオでは、別のアプローチが推奨されます。

class MainClass
{
    private static bool keepRunning = true;

    public static void Main(string[] args)
    {
        Console.CancelKeyPress += delegate(object? sender, ConsoleCancelEventArgs e) {
            e.Cancel = true;
            MainClass.keepRunning = false;
        };
        
        while (MainClass.keepRunning) {
            // Perform small chunks of work
        }
        Console.WriteLine("exited gracefully");
    }
}

この実装では、e.Cancel フラグを true に設定し、プログラムの即時終了を防ぎます。代わりに、keepRunning 変数が false に設定され、進行中の計算が完了した後に while ループが終了できるようになります。このアプローチにより、プログラムの正常な終了が容易になります。

以上がC# コンソール アプリケーションで Ctrl C 割り込みを適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。