我正在控制台应用程序中制作蛇游戏,游戏应该在一秒左右后刷新(蛇必须继续移动)。 这就是我使用 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,经过一些专业的谷歌搜索后,我找不到解决这个问题的方法。任何帮助都会得到应用。SAThreads aswll 的解释 :)
最佳答案
尝试向您的 Main 方法添加一个 [STAThread] 属性:
[STAThread]
static void Main()
{
// ...
}
关于c# - 在 Main 中使用 Keyboard.IsKeyDown() 时出现 System.InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43033798/