C# 从控制台中异步读取

C# 从控制台中异步读取,c#,C#,我刚刚意识到,Console.In类型的TextReader没有BeginRead方法 如何从Console.In实现异步读取 我的第一个想法是找到一个stdin的句柄,让服务员等待这个句柄发出信号。但这涉及到很多Win32调用 有没有更简单的方法? 也许是这样的: Stream s = (Stream) Console.In; s.BeginRead(..) 有什么想法吗?您可以在控制台上进行轮询。KeyAvailable在一个单独的线程中,然后在数据可用时立即读取数据。创建您自己的类来执行

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

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

我的第一个想法是找到一个stdin的句柄,让服务员等待这个句柄发出信号。但这涉及到很多Win32调用

有没有更简单的方法? 也许是这样的:

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

有什么想法吗?

您可以在
控制台上进行轮询。KeyAvailable
在一个单独的线程中,然后在数据可用时立即读取数据。

创建您自己的类来执行对控制台的调用。读取所有读取的数据并将其存储在某个位置。然后用EndRead结束线程,并让它返回所读取的数据。

该线程将在读取调用时阻塞。你如何解除封锁?(比如说受控关机)您建议Thread.Abort()吗?这不能使从流中读取的数据保持在未定义状态吗/李个人将使用类中的方法中止线程,然后显式清理资源。我知道这是一个混乱的解决方案,但没有办法检查流线程中的数据。Abort()是我能想到的唯一解决方案。你可以做一些类似于我对这个问题的回答的事情