C# 在Main中使用Keyboard.IsKeyDown()时System.InvalidOperationException
我正在一个控制台应用程序中制作游戏snake,游戏应该在一秒钟左右后刷新(蛇必须继续移动)。 这就是为什么我使用Keyboard.IsKeyPressed()的原因,因为当我使用Console.ReadKey()时,它会停止程序,而无法继续。这是运动的代码在Main中的样子:C# 在Main中使用Keyboard.IsKeyDown()时System.InvalidOperationException,c#,multithreading,keyboard,C#,Multithreading,Keyboard,我正在一个控制台应用程序中制作游戏snake,游戏应该在一秒钟左右后刷新(蛇必须继续移动)。 这就是为什么我使用Keyboard.IsKeyPressed()的原因,因为当我使用Console.ReadKey()时,它会停止程序,而无法继续。这是运动的代码在Main中的样子: System.Threading.Thread.Sleep(1000); if (Keyboard.IsKeyDown(Key.Up)) Snake.Move(ConsoleK
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循环中,而backspace只是我传递的东西,所以它将刷新并继续在同一方向上,而实际上不会以不同的方式移动。但是当我这样做时,调用线程必须是STA,经过一些专业的谷歌搜索后,我找不到解决这个问题的方法,任何帮助都是值得的
[STAThread]
static void Main()
{
// ...
}
谢谢,这非常简单:)