常に(つまり、通常は数秒ごとに)コンソールに書き出す.NET4.0コンソールアプリケーションを構築しています。これはマルチスレッドアプリであり、さまざまなスレッドがさまざまな時間にコンソールに書き込みます。
問題は、これがすべて起こっている間、ユーザー入力を受け入れたいということです。ユーザー入力はいつでも発生する可能性があります。
私は2つの異なる方法を試しましたが、どちらもうまくいきませんでした。
を探して、別のスレッドを使用して読んでみました
Console.KeyAvailable
。これは「機能」しましたが、入力しようとしたときに文字列が出力に書き込まれていたため、非常に混乱していました。これにより、入力中にカーソルが動き回り、方向が乱れていました。Console.SetCursorPosition
コンソールを2つの「ペイン」に分割するために使用してみました。上に出力し、下に入力します。これもうまくいきましたがConsole.Clear()
、毎回画面を描いてから電話する必要があります。これは非常に遅く、狂った画面のちらつきを引き起こしました。
私の他の唯一のオプションは、コンソールをエミュレートするWindowsフォームアプリまたはWPFアプリを作成することのようです。私がしたいのは自発的なユーザー入力を受け入れることだけなので、これはばかげているようです。
私のgoogle-fuは、有効なコンソールの代替品や、コンソールをシミュレートする.NETアプリを作成した人を見つけませんでした。
私はここで立ち往生していますか?