Я пишу Консольное приложение в 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/
Это известная проблема в Microsoft Connect .
Обратите внимание, что он работает вне отладчика.