我有這個線程運行以下形式的代碼,其中strm1在我測試的情況下是控制檯stdin。c#console stdin輸入流讀取
while (true) { strm1.Read(buffer, 0, 1); dosomething1(buffer); }
按下ENTER鍵,dosomething1()
調用dosomething2()
。然而,即使當我按下輸入,我仍然不得不按其他鍵dosomething2()
運行。我怎樣才能解決這個問題?謝謝。
我有這個線程運行以下形式的代碼,其中strm1在我測試的情況下是控制檯stdin。c#console stdin輸入流讀取
while (true) { strm1.Read(buffer, 0, 1); dosomething1(buffer); }
按下ENTER鍵,dosomething1()
調用dosomething2()
。然而,即使當我按下輸入,我仍然不得不按其他鍵dosomething2()
運行。我怎樣才能解決這個問題?謝謝。
最後,我解決了這個問題:用Stream
s代替StreamReader
s!可能是Microsoft的一個實現問題,但至少可以解決問題。
我不知道你的代碼執行什麼檢查,但請記住,在Windows中,Environment.NewLine是兩個字符:CR(\ r),LF(\ n)。
是的,我知道這一點。這不應該影響它,因爲如果當按下一個輸入時,由於讀取處於while循環中,它仍會讀取\ n。 – irisjay
dosomething2()如何和在哪裏調用 – Adil
我們需要看到「dosomething1()」方法代碼。當dosomething1()檢測到緩衝區是\ n時,在dosomething1()中使用 –
。爲什麼這個donwvoted!??? – irisjay