Comment garder un .NET console application en cours d'exécution?

Envisager une application Console qui démarre certains services dans un thread séparé. Tout ce qu'il faut faire est d'attendre que l'utilisateur appuie sur Ctrl+C pour arrêter.

Laquelle des affirmations suivantes est la meilleure façon de le faire?

static ManualResetEvent _quitEvent = new ManualResetEvent(false);

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

    //kick off asynchronous stuff 

    _quitEvent.WaitOne();

    //cleanup/shutdown and quit
}

Ou cela, à l'aide de Fil.Sleep(1):

static bool _quitFlag = false;

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

    //kick off asynchronous stuff 

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

    //cleanup/shutdown and quit
}
InformationsquelleAutor intoOrbit | 2010-04-06