首頁 >後端開發 >C++ >如何在 C# 控制台應用程式中優雅地處理 Ctrl C 中斷?

如何在 C# 控制台應用程式中優雅地處理 Ctrl C 中斷?

Susan Sarandon
Susan Sarandon原創
2024-12-30 20:52:14426瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn