簡體   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