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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 09:38:13946ブラウズ

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

C# コンソール アプリケーションでの Ctrl C (SIGINT) のトラップ

Ctrl C ( SIGINT)、Console.CancelKeyPress イベントは

Console.CancelKeyPress イベントの使用:

ユーザーが Ctrl C を押すと、Console.CancelKeyPress イベントが発生します。このイベントにイベント ハンドラーを登録すると、プログラムが終了する前にコードを実行できます。

Console.CancelKeyPress += delegate {
    // Perform cleanup operations
};

Ctrl C が押されている場合押すと、イベント ハンドラー内のコードが実行され、重要なクリーンアップ タスクを完了できるようになります。デリゲートの後のコードは実行されないことに注意することが重要です。

複雑なシナリオの処理:

タスクの即時終了が現実的でない状況では、異なるアプローチを採用することもできます。次のコードは、計算の完了後に正常に終了するようにプログラムに指示する方法を示しています。

bool keepRunning = true;

Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) {
    e.Cancel = true;
    keepRunning = false;
};

while (keepRunning) {
    // Perform work in small chunks
}

e.Cancel を true に設定すると、イベント ハンドラーの後も実行が続行されます。 Ctrl C を押すと keepRunning 変数が false に設定され、プログラムが正常に終了します。

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

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