2016-05-21 2 views
0
こと、私のC#のコンソールアプリケーションでは、それはこの

ループが実行されている間に入力されたテキストを格納するC#コンソール?

static void Main() 
{ 
    OpenLoginForm(); 
} 

OpenLoginForm() 
{ 
    while(true) 
    { 
     //This breaks when user has logged in 
    } 
} 

と少し似て起動したユーザがコンソールに入力しようとすると何がOpenLoginForm() UNTILコンソールに出力できないが動作して停止しているので、問題があるので、

[OK]をコンソールに入力したテキストがOpenLoginForm()の場合、OpenLoginForm()が実行中であってもコンソールに出力されませんでした。OpenLoginForm()ユーザーがコンソールに入力しようとしたテキストを実行していました。 OpenLoginForm()が実行されているときにユーザーがコンソールに入力しても、入力しようとするテキストはOpenLoginForm()が実行を停止しても出力されません。ここで

OpenLoginForm()が実行されている場合、私はコンソールに入力して示したGIFですが、私はその後、入力しようとしたテキストを実行しているOpenLoginForm()停止は、これは私がしようとしている何であっても出力されます時に見ることができます防ぐ。 enter image description here

あなたが理解できる方法でこの質問にお答えしたいと思いますが、私はC#を初めてお使いになりました。

答えて

2

ここにあるものはすべて同じスレッドで実行されているので、コンソールウィンドウが開いている間はコンソールに何も表示されません。ただし、コンソールの入力バッファはキーストロークでいっぱいです。

in this questionに記載されているように、入力バッファをクリアすることでこれを解決できるはずです。これはConsole.ReadKey(true)を使用することに基づいています。これは、コンソールウィンドウに)の入力キーが表示される(やや直感的に)です。あなたは入力を放棄するだけです。

MSDNの記事はConsole.ReadKey(bool)です。

1

これはスレッドに関する問題です。基本的に、コンソールの入力バッファはアクティブであり、出力は無効になっています。ボックスを閉じると、コンソールの出力バッファがオンになり、入力バッファが出力バッファにフラッシュされます。 最も簡単な解決策は、複数のスレッドを使用することです。コンソールを実行するメインスレッドとログインボックスを実行する子スレッド。また、子供がコンソールを閉じている場合、子供を閉じます

関連する問題