C# 在不暂停的情况下扫描控制台中的按键

C# 在不暂停的情况下扫描控制台中的按键,c#,windows,dll,console,C#,Windows,Dll,Console,我有这个问题。我有一个while循环用于在控制台中绘制文本,我想让它具有交互性。我有两个if语句,其中包含实际键的条件。 所以,如果我按下“W”,它会做一些事情,但这不会起作用。我有两个项目,engine.dll和testApp用于测试。代码如下: while (true) { game g = new game(); g.Draw(cHP, mHP, name,posX,posY,blip);

我有这个问题。我有一个while循环用于在控制台中绘制文本,我想让它具有交互性。我有两个if语句,其中包含实际键的条件。 所以,如果我按下“W”,它会做一些事情,但这不会起作用。我有两个项目,engine.dll和testApp用于测试。代码如下:

 while (true)
            {
                game g = new game();
                g.Draw(cHP, mHP, name,posX,posY,blip);
                Thread.Sleep(50);
                Console.CursorVisible = false;
                ConsoleKeyInfo cki = new ConsoleKeyInfo();
                //if (Console.KeyAvailable) { Console.CursorVisible = true; break; }
                if (cki.KeyChar == 'w') MoveY(1); // Here it is
                if (cki.KeyChar == 's') MoveY(-1); // and here
            }

不确定您在最终版本中想要什么,但对现有代码的修复是这样的

 Console.CursorVisible = false;
 while(true)
 {
       game g = new game();
       g.Draw(cHP, mHP, name,posX,posY,blip);
       Thread.Sleep(50); //might not be required depending
                         //on what you want to do

       var cki = Console.ReadKey(true);
       if (cki.KeyChar == 'w') MoveY(1);// Here it is
       if (cki.KeyChar == 's') MoveY(-1); // and here
 }

首先不要使用thread.sleep,将readkey放在后台工作程序上,然后在它完成后做一些事情(如果这可以工作的话)
Console.KeyAvailable
?@zmbq-以前从未见过,非常好,正如我所知,Console.KeyAvailable只是控制是否单击了任何键。它是布尔值,我不需要使用。不确定你的设计是什么,但很可能是
game g=new game()行应在
之前,而
循环。。。。