繁体   English   中英

在Main中使用Keyboard.IsKeyDown()时出现System.InvalidOperationException

[英]System.InvalidOperationException when using Keyboard.IsKeyDown() in Main

我在控制台应用程序中制作游戏蛇,并且游戏应该在一秒左右后刷新(蛇必须继续移动)。 这就是我使用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只是我传递的东西,所以它会刷新并继续沿同一方向而不会实际移动。 但当我这样做ia System.InvalidOperationException调用线程必须是STA,经过一些专业googeling我无法找到解决这个问题的方法任何帮助将appriciated.and explenation为SAThreads aswll :)

尝试将[STAThread]属性添加到Main方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM