【发布时间】:2019-11-29 19:35:08
【问题描述】:
我想通过使用空格来停止整个 do-while 循环并写出我的 WriteLine,但它在按下空格键时没有任何作用。我认为这与 Thread.Sleep 有关,也许它在睡眠时不允许用户输入。如果有人能告诉我为什么这不起作用,我会很高兴
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace casinov2
{
class Program
{
static void Main(string[] args)
{
int x=3;
int y = 15;
int[] elemek = new int[7];
do{
while (!Console.KeyAvailable){
for (int i = 0; i < 5; i++){
Console.Clear();
Console.SetCursorPosition(x, y);
x++;
Console.WriteLine("{0:██}{1:██}{2:██}", elemek[i], elemek[i + 1], elemek[i + 2]);
System.Threading.Thread.Sleep(100);
if (i >= 4){
for (int j = 0; j < 5; j++){
Console.Clear();
Console.SetCursorPosition(x, y);
x--;
Console.WriteLine("{0:██}{1:██}{2:██}", elemek[i], elemek[i + 1], elemek[i + 2]);
System.Threading.Thread.Sleep(100);
}
i = -1;
}
}
}
} while (Console.ReadKey(true).Key != ConsoleKey.Spacebar);
Console.WriteLine("ready");
Console.ReadLine();
}
}
}
【问题讨论】:
-
i = -1;阻止 for 循环完成。删除它。 -
目前还不完全清楚您预期会发生什么。正如汉斯指出的那样,通过重置
i,该循环将永远不会终止,因此您将永远不会到达您的代码尝试读取控制台输入的地步。另一方面,您似乎真的不希望循环终止。如果是这种情况,那么您需要独立于输出运行输入(即在每个标记重复的另一个线程中),或者您需要在循环内轮询,检查Console.KeyAvailable并在返回 @ 时退出循环987654325@.
标签: c#