2

コンソールでテキストを変更するより効率的な方法があるかどうか疑問に思っていました。例: 発生したイベントの数を追跡している場合、出力します

0 events have occurred

イベントが発生すると、その 0 をインクリメントしたいと考えています。

現在、私は非常に醜い方法でそれを行っています: String または Stringbuilder を使用してコンソールに出力されたすべてを追跡し、変更を加える必要がある場合は、文字列を変更し、コンソールをクリアし、文字列をコンソールに出力します。おそらくあまり効率的ではないことは別として、短期間にあまりにも多くの変更が加えられると、コンソールが「点滅」するという醜い方法で表示されます。

前もって感謝します。

4

1 に答える 1

1

秘訣は、キャリッジ リターン コードを使用することです。これは基本的にカーソルを同じ行の先頭に戻します。これは、次の行の先頭にカーソルを置くキャリッジ リターン + ライン フィード (vbCrLf) とは異なります。

VB と C# では、これを行う方法が少し異なります。

  • VB: vbCr コードを使用します。

  • C#: \r コードを使用します。

サンプルコードは次のとおりです。

VB:

For i = 1 To 100
    Console.Write("Processing...{0}% complete  " & vbCr, i)
    System.Threading.Thread.Sleep(100)
Next

C#:

for (int i = 1; i <= 100; i++)
{
    Console.Write("Processing... {0}% complete\r", i);
    System.Threading.Thread.Sleep(100);
}  
于 2013-03-12T22:59:05.023 に答える