C#中标准I / O的非阻塞读取

我想从控制台获得非阻塞读取function。 我如何用C#编写?

 var buf=new byte[2048]; var inputStream=Console.OpenStandardInput(); //dispose me when you're done inputStream.BeginRead(buf,0,buf.Length,ar=>{ int amtRead=inputStream.EndRead(ar); //buf has what you need. You'll need to decode it though },null); 

Richard Dutton在他的博客上有一个解决方案:

 while (true) { if (Console.KeyAvailable) { ConsoleKeyInfo key = Console.ReadKey(true); switch (key.Key) { case ConsoleKey.F1: Console.WriteLine("You pressed F1!"); break; default: break; } } // Do something more useful }