Jak utrzymać działanie aplikacji konsoli .NET?

Rozważmy aplikację konsolową, która uruchamia niektóre usługi w osobnym wątku. Wystarczy, że użytkownik naciśnie Ctrl + C, aby go zamknąć.

Który kod z poniższych jest lepszym sposobem na to?

static ManualResetEvent _quitEvent = new ManualResetEvent(false);

static void Main() {
    Console.CancelKeyPress += (sender, eArgs) => {
        _quitEvent.Set();
        eArgs.Cancel = true;
    };


    _quitEvent.WaitOne();

// czyszczenie / zamknięcie i wyjście
}

albo używając Thread.Sleep(1):

static bool _quitFlag = false;

static void Main() {
    Console.CancelKeyPress += delegate {
        _quitFlag = true;
    };



    while (!_quitFlag) {
        Thread.Sleep(1);
    }

1 odpowiedź

Zawsze zapobiegaj używaniu pętli while, szczególnie gdy wymuszasz na kodzie sprawdzanie zmiennych. Marnuje to zasoby procesora i spowalnia program.

Zdecydowanie powiedziałbym pierwszy sposób jest lepszy.

Pozdrawiam :)

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.