2013-08-18 31 views
0

因此,让我们使用此代码:取消Console.ReadKey()使用的代码,而不是在程序

Console.ReadKey(true); 
//Cancel the ReadKey prompt 
Console.WriteLine("ReadKey was cancelled."); 

在运行程序时,应该发生的唯一的事情是,输出ReadKey was cancelled.应该会出现。我怎样才能做到这一点?它甚至有可能吗?

在此先感谢。

+4

'ReadKey'是一个同步阻塞调用。在某人按下某个键之前,执行不会继续(写入行)。 'true'表示按下的任何按键都不应该被打印到控制台的stdout。然后你的写行会被调用,程序会立即退出。 (假设这实际上是'Main'的主体)。 – vcsjones

+0

@vcsjones这不是我问的。 – Adam

+1

你对我的要求并不清楚,所以我发表评论,而不是回答。 – vcsjones

回答

3

除非您中止线程,否则无法取消ReadKey。 (强制关闭程序)

我在调用ReadKey之前检查一个密钥是否可用,使用Console.KeyAvailable属性。

+0

但是问题甚至没有调用它或不叫它..它是要取消它,如果它正在运行 – Adam

1

我能看到你的唯一方法就是使用System.Windows.Forms.SendKeys.Send(),但是这对于控制台应用程序来说“不可用”,因为它们不管理Windows消息,如果你尝试它,你会看到异常。可能有一种方法可以使用Windows API自行实现。

相关问题