我剛剛意識到,TextReader,Console.In類型沒有BeginRead方法。從控制檯異步讀取。
如何從Console.In實現異步讀取?
我的第一個想法是得到一個句柄,並讓服務員等待那個句柄發信號。但是這涉及到很多Win32調用。
有沒有更簡單的方法來做到這一點? 也許上線:
Stream s = (Stream) Console.In;
s.BeginRead(..)
任何想法?
我剛剛意識到,TextReader,Console.In類型沒有BeginRead方法。從控制檯異步讀取。
如何從Console.In實現異步讀取?
我的第一個想法是得到一個句柄,並讓服務員等待那個句柄發信號。但是這涉及到很多Win32調用。
有沒有更簡單的方法來做到這一點? 也許上線:
Stream s = (Stream) Console.In;
s.BeginRead(..)
任何想法?
創建自己的類,將調用線程發送到Console.Read並將所有讀取的數據存儲在某處。然後用EndRead結束線程並讓它返回它讀取的數據。
該線程會在閱讀呼叫時被阻塞。你如何解鎖它? (說控制關機。)你是否建議Thread.Abort()? 難道這不會使未讀定義狀態下的流讀取? /L – leiflundgren 2009-05-28 08:15:09
您可以在單獨的線程中輪詢Console.KeyAvailable
,然後在數據可用時立即讀取數據。
你可以做類似於我對這個問題的答案的東西http://stackoverflow.com/a/23628232/659190 – Jodrell 2014-05-13 11:16:57