我是新的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()
。
答案 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();