簡體   English   中英

ReadKey 在線程超時結束之前獲取字符

[英]ReadKey getting characters pressed before a thread timeout has ended

我正在嘗試我的第一個 c# 基於控制台的游戲。 我創建了一個居中的學分介紹,最后印有“按任意鍵繼續...”。 我使用Console.ReadKey()在等待用戶輸入時模擬暫停。 問題是您可以“堆疊”輸入,可能有一個更好的術語,但本質上,當控制台處於超時狀態時,仍會讀取關鍵輸入並排隊等待超時結束。 例如;

//10 second wait
//this is where I would press a key
Thread.Sleep(10000);
char x = Console.ReadKey().KeyChar;
//x will be equal to whatever key I pressed before the timeout

這不是我想要的功能。 有人對此有解決方案嗎? 不使用Thread.Sleep()Console.ReadKey()

如果您仍然不理解問題,請在Thread.Sleep()仍然有效並且 readkey 時按一個鍵,時間到后將打印該字符。 有誰知道如何停止讀取密鑰?

如果您想要實際的項目代碼,請詢問。 雖然我認為這與這個問題無關。

如果要在等待密鑰之前清除緩沖區,只要有KeyAvailable ,就可以在循環中調用Console.ReadKey(true) true傳遞給方法指定應該截取密鑰,而不是 output 到控制台 window。

例如:

Thread.Sleep(TimeSpan.FromSeconds(10));

// Clear buffer by "throwing away" any keys that were pressed while we were sleeping
while(Console.KeyAvailable) Console.ReadKey(true);

char x = Console.ReadKey().KeyChar;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM