从Console.In异步读取

时间:2009-05-25 11:59:23

标签: c#

我刚才意识到TextReader是Console.In的类型,没有BeginRead方法。

如何从Console.In实现异步读取?

我的第一个想法是让一个HANDLE到stdin并让服务员等待该句柄发出信号。但这涉及很多Win32呼叫。

有更简单的方法吗? 也许就是:

Stream s = (Stream) Console.In;
s.BeginRead(..)

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以在单独的线程中对Console.KeyAvailable进行轮询,然后在数据可用时立即读取。

答案 1 :(得分:0)

创建您自己的类,该类将调用线程化到Console.Read并将所有读取的数据存储在某处。然后用EndRead结束线程并让它返回它读取的数据。