2013-08-18 33 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自行實現。

相關問題