投稿を削除し、コードを追加しました:
namespace StackOverflowQuestion
{
class Program
{
static void Main (string[] args)
{
var cw = new ConsoleWriter ();
for (int i = 0; i <= 5000000; i++)
{
cw.Write (i);
}
Console.ReadKey ();
}
}
class ConsoleWriter
{
private Stopwatch sw = new Stopwatch ();
public ConsoleWriter ()
{
sw.Start ();
}
public void Write (int pNumber)
{
if (sw.ElapsedMilliseconds >= 50)
{
Console.WriteLine (pNumber);
sw.Restart ();
}
}
}
}
そして出力:305940
651171
1002965
1358665
1715740
2069602
2419054
2772833
3127880
3485054
3844335
4204016
4557912
4913494
したがって、すべてが正常に機能します。この例では、ConsoleWriterはコンソールに番号を表示しますが、コントロールサーフェスに表示することもできます。ご覧のとおり、Writeメソッドを5000000回呼び出しても、UIは最低50ミリ秒後にしか更新されません。すばらしいですが、多くの場合、最後の値5000000は表示されないことに注意してください。それを修正する方法は?50ミリ秒ごとにイベントを呼び出し、書き込む値が変更されていることを確認するクラス(スレッド)を使用する必要がありますか?