Как я использую Консоль. CancelKeyPress в.NET 4? (Хорошо работает в.NET 3.5 и ниже),

Я пишу Консольное приложение в C# 4 и хочу корректно отменить свою программу, и Ctrl + C нажимается. Следующий код, который я использовал много раз прежде, но теперь при попытке использовать его в.NET 4, он кажется странным необработанным исключением, происходит.

namespace ConsoleTest
{
    class Program
    {
        private static bool stop = false;

        static void Main(string[] args)
        {
            System.Console.TreatControlCAsInput = false;
            System.Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);

            while (!stop)
            {
                System.Console.WriteLine("waiting...");
                System.Threading.Thread.Sleep(1000);
            }
            System.Console.WriteLine("Press any key to exit...");
            System.Console.ReadKey(true);
        }

        static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
        {
            stop = true;
            e.Cancel = true;
        }
    }
}

Если я изменяю Целевую Платформу на.NET 3.5, она работает.

Править: Кажется, что этот человек видит ту же проблему: http://johnwheatley.wordpress.com/2010/04/14/net-4-control-c-event-handler-broken/

10
задан BigJoe714 19 May 2010 в 14:02
поделиться