Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Main中使用Keyboard.IsKeyDown()时System.InvalidOperationException_C#_Multithreading_Keyboard - Fatal编程技术网

C# 在Main中使用Keyboard.IsKeyDown()时System.InvalidOperationException

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

我正在一个控制台应用程序中制作游戏snake,游戏应该在一秒钟左右后刷新(蛇必须继续移动)。 这就是为什么我使用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循环中,而backspace只是我传递的东西,所以它将刷新并继续在同一方向上,而实际上不会以不同的方式移动。但是当我这样做时,调用线程必须是STA,经过一些专业的谷歌搜索后,我找不到解决这个问题的方法,任何帮助都是值得的

[STAThread]
static void Main()
{
   // ...
}

谢谢,这非常简单:)