C# コンソール アプリケーションを使用する場合、Ctrl C (SIGINT) キーストロークをトラップする必要がある場合があります。アプリケーションが終了する前に、特定のクリーンアップ タスクを実行します。この記事では、C# コンソール アプリケーションで SIGINT をキャプチャするためのベスト プラクティスについて詳しく説明します。
推奨されるアプローチは、Console.CancelKeyPress イベントをサブスクライブすることです。ユーザーが Ctrl C を押します。このイベントにデリゲートを提供することで、アプリケーションの前にクリーンアップ コードを実行できます。
public static void Main(string[] args) { Console.CancelKeyPress += delegate { // Cleanup code }; while (true) {} }
ただし、このアプローチには制限があります。クリーンアップ デリゲートの後に配置されたコードは、Ctrl C を押しても実行されない可能性があります。
即時の中断が望ましくないシナリオでは、正常に終了することをお勧めします。計算またはタスクが完了したときにアプリケーションを実行します。 set-reset イベントを使用すると、終了プロセスを制御できます。
private static bool keepRunning = true; public static void Main(string[] args) { Console.CancelKeyPress += (sender, e) => { e.Cancel = true; keepRunning = false; }; while (keepRunning) { // Task execution } Console.WriteLine("Exited gracefully"); }
Ctrl C を押すと、e.Cancel が true に設定され、即時終了が防止されます。 keepRunning 変数が false に設定されているため、現在のタスクが完了した後に while ループが終了します。これにより、アプリケーションは正常に終了できます。
以上がC# コンソール アプリケーションで Ctrl C (SIGINT) を適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。