c# – 如何在.NET 4中使用Console.CancelKeyPress? (在.NET 3.5及更低版本中可以正常工作)

前端之家收集整理的这篇文章主要介绍了c# – 如何在.NET 4中使用Console.CancelKeyPress? (在.NET 3.5及更低版本中可以正常工作)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在C#4中编写一个控制台应用程序,并希望正常地取消我的程序,并按下Ctrl C.以下代码我以前使用了很多次,但是现在在.NET 4中尝试使用它时,似乎发生了一个奇怪的未处理的异常.
  1. namespace ConsoleTest
  2. {
  3. class Program
  4. {
  5. private static bool stop = false;
  6.  
  7. static void Main(string[] args)
  8. {
  9. System.Console.TreatControlCAsInput = false;
  10. System.Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);
  11.  
  12. while (!stop)
  13. {
  14. System.Console.WriteLine("waiting...");
  15. System.Threading.Thread.Sleep(1000);
  16. }
  17. System.Console.WriteLine("Press any key to exit...");
  18. System.Console.ReadKey(true);
  19. }
  20.  
  21. static void Console_CancelKeyPress(object sender,ConsoleCancelEventArgs e)
  22. {
  23. stop = true;
  24. e.Cancel = true;
  25. }
  26. }
  27. }

如果我将目标框架更改为.NET 3.5,它可以正常工作.

编辑:看来这个人看到同样的问题:
http://johnwheatley.wordpress.com/2010/04/14/net-4-control-c-event-handler-broken/

解决方法

这是 Microsoft Connect的一个已知问题.

请注意,它在调试器之外工作.

猜你在找的C#相关文章