lbl1.BackColor = Color.Red; //change backcolors of labels
lbl2.BackColor = Color.Red;
Thread.Sleep(2000);
lbl1.Text = val1.ToString(); //assign values to labels
lbl2.Text = val2.ToString();
Thread.Sleep(2000);
lbl1.BackColor = Color.Green; //reassign original backcolors
lbl2.BackColor = Color.Green;
这是在递归方法中调用的方法的一部分。我想分解这些步骤以显示慢速模拟。但是,这并没有给出预期的输出。
有更好的方法吗?请建议。
答案 0 :(得分:4)
不要使用Thread.Sleep()
来冻结用户界面,而是可以通过实施自己的异步方法来完成同样的工作。
您也可以使用Timers
来实现相同目标。
这是关于如何异步管理任务的示例。
假设这是我的方法Perform()
private async Task Perform()
{
lbl1.BackColor = Color.Red;
lbl2.BackColor = Color.Red;
await Task.Delay(2000);
lbl1.Text = val1.ToString();
lbl2.Text = val2.ToString();
await Task.Delay(2000);
lbl1.BackColor = Color.LightSeaGreen; //changed to lightseagreen as the green you used
lbl2.BackColor = Color.LightSeaGreen; //was hurting my eyes :P
}
我在事件中称之为button_click
事件。
private void button1_Click(object sender, EventArgs e)
{
Task t = Perform();
}
输出如下:
详细了解如何使用 async and await 。