一个接一个地改变标签的颜色
问题描述:
我有一个带有一些标签的窗口。我希望标签的背景色,取决于我运行一些测试的更改:一个接一个地改变标签的颜色
private void btnStartTest_Click(object sender, EventArgs e)
{
if(Tests.FirstTest())
{
this.lblFirstTest.BackColor = Color.LawnGreen;
}
else
{
this.lblFirstTest.BackColor = Color.Red;
}
if(Tests.SecondTest())
{
this.lblSecondTest.BackColor = Color.LawnGreen;
}
else
{
this.lblSecondTest.BackColor = Color.Red;
}
//and so on...
}
我想要的标签,以变更后的另一种颜色一个以显示进度。 但现在颜色的变化只在方法结束时才生效。所以所有的标签都会同时改变颜色。
这是为什么?我可以改变什么来获得所需的效果?
答
Like BugFinder said ...在不同的线程上运行该方法(Task.RunAsync((=)=> {}))...但在这种情况下,您必须使用调度程序才能将值分配给控件(或其他例外)
如果你的UI线程有很长的运行时间,比如你的测试,你的UI线程将会挂起。所以你的代码没有机会绘制更新。 – BugFinder