我试图按Q退出控制台窗口中的内容。我不喜欢我目前的执行方式。有没有一种方法可以使我异步或使用回调从控制台获取 key ?

最佳答案

您可以从另一个线程调用Console.ReadKey(),这样它就不会阻塞您的主线程。 (您可以使用.Net 4 Task或旧的Thread启动新线程。)

class Program
{
    static volatile bool exit = false;

    static void Main()
    {
        Task.Factory.StartNew(() =>
            {
                while (Console.ReadKey().Key != ConsoleKey.Q) ;
                exit = true;
            });

        while (!exit)
        {
            // Do stuff
        }
    }
}

10-01 21:46