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 サイトの他の関連記事を参照してください。