如何在循环中将文本追加到TextBlock中?

时间:2016-11-15 09:49:41

标签: c# wpf

我是新的WPF。

我试图在我的WPF应用程序中打印一些信息。我编写了一个简单的方法,将文本附加到名为TextBlock的{​​{1}},我希望像控制台输出一样使用它。

tbLog

现在我试图在循环中使用它。

private void WriteLn(string text)
{
    tbLog.Text += text + Environment.NewLine; // tbLog is a TextBlock
}

foreach (var day in listOfDays) { Stopwatch watch = new Stopwatch(); watch.Start(); double[] aData = GetDayData(data, day); // I'm using EF6 DbContext here alData.Add(aData); WriteLn("Processing " + day.Date.Date + " took " + watch.Elapsed.TotalSeconds + "s"); } 的效果不是立即可见的(每次循环运行后)。所有打印数据在整个循环结束后显示。 我该如何解决?

循环中使用的WriteLn()方法使用实体框架6 GetDayData()

1 个答案:

答案 0 :(得分:1)

所以,感谢Evk我修改了我的代码:

'WriteLn'部分:

private void WriteLn(string text)
{
    tbLog.Dispatcher.BeginInvoke(new Action(() =>
    {
        tbLog.Text += text + Environment.NewLine;
    }));
}

循环部分:

Thread t = new Thread(() => 
        {
            foreach (var day in listOfDays)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                double[] aData = GetDayData(data, day);
                alData.Add(aData);
                WriteLn("Processing " + day.Date.Date + " took " + watch.Elapsed.TotalSeconds + "s");

                id++;
            }
        });

t.Start();