如何在循环中立即添加文本到TextBlock
本文关键字:添加 文本 TextBlock 循环 | 更新日期: 2023-09-27 18:17:53
我是新WPF。
我正试图在我的WPF应用程序中打印一些信息。我写了一个简单的方法,将文本附加到TextBlock
称为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()
的效果不立即可见(每次循环运行后)。所有打印的数据显示后,整个循环结束。我怎样才能解决这个问题呢?
我在循环中使用的GetDayData()
方法使用实体框架6 DbContext
。
所以,感谢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();