while(true) ループと Console.ReadLine を介してユーザーから継続的にコマンドを取得する C# で記述されたアプリケーションがあります。
また、コンソールを介して報告するさまざまなバックグラウンド操作もあります。次の簡単な例をご覧ください。
class Program
{
static void Main(string[] args)
{
new Messager(1000 * 2.5f);
new Messager(1000 * 3);
while (true)
{
Console.ReadLine();
}
}
}
public class Messager
{
Timer Timer;
public Messager(double interval)
{
this.Timer = new Timer(interval);
this.Timer.Elapsed += (sender, e) =>
{
Console.WriteLine("message from " + this.Timer.Interval);
};
this.Timer.Start();
}
}
問題は、コマンドを入力し、Enter を押す前に Messager がレポートを返すと、Messager からのメッセージが現在の行に追加され、カーソルが次の行に配置されることです。このスクリーンショットを参照してください。
ご想像のとおり、私はそれを望んでいません。コマンドの現在の入力が常に最後の行に残り、すべてのメッセージがその行の上に配置されるようにします。このようなアプリケーションに期待するとおりです。どうすればそれを達成できますか?