【发布时间】:2017-03-26 19:56:44
【问题描述】:
我正在控制台应用程序中制作游戏蛇,游戏应该在一秒钟左右后刷新(蛇必须继续移动)。 这就是我使用 Keyboard.IsKeyPressed() 的原因,因为当我使用 Console.ReadKey() 时,它会停止程序而无法继续。这是 Main 中运动的代码:
System.Threading.Thread.Sleep(1000);
if (Keyboard.IsKeyDown(Key.Up))
Snake.Move(ConsoleKey.UpArrow);
else if (Keyboard.IsKeyDown(Key.Down))
Snake.Move(ConsoleKey.DownArrow);
else if (Keyboard.IsKeyDown(Key.Left))
Snake.Move(ConsoleKey.LeftArrow);
else if (Keyboard.IsKeyDown(Key.Right))
Snake.Move(ConsoleKey.RightArrow);
else
Snake.Move(ConsoleKey.Backspace);
它位于 while 循环内,而退格键只是我通过的东西,因此它将刷新并沿同一方向继续,而实际上不会以不同的方式移动。但是当我这样做时,我是 System.InvalidOperationException 调用线程必须是 STA,经过一些专业的谷歌搜索后,我无法找到解决此问题的方法
【问题讨论】:
标签: c# multithreading keyboard