我正在用 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;
}
}
}
如果我将 Target Framework 更改为 .NET 3.5,它会起作用。
编辑:这个人似乎看到了同样的问题: http://johnwheatley.wordpress.com/2010/04/14/net-4-control-c-event-handler-broken/
最佳答案
这是 Microsoft Connect 上的一个已知问题.
请注意,它确实在调试器之外工作。
关于c# - 如何在 .NET 4 中使用 Console.CancelKeyPress? (在 .NET 3.5 及以下版本中工作正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866171/