【发布时间】:2019-10-08 12:09:01
【问题描述】:
我想延迟我的循环,以便它显示我输入的背景颜色。现在,它太快了。
目的是让颜色闪烁以创建迪斯科效果。我使用了Thread.Sleep,但这不起作用。
这是我目前的尝试:
private void Disco(object sender, RoutedEventArgs e)
{
for (int n =0; n<=10;n++)
{
Background = Brushes.Coral;
Background = Brushes.AliceBlue;
Background = Brushes.DarkRed;
Background = Brushes.Red;
Background = Brushes.Blue;
Background = Brushes.Aquamarine;
}
}
【问题讨论】:
-
你不应该使用 for 循环来做这样的动画。您使用的是什么 UI 框架? WPF?
-
使用 Timer 类可以帮助解决这个问题,它还需要您更改循环流程。
-
尝试添加Thread.Sleep(5000);低于背景 = .. 行。如果我是你,我会创建一种新的方法来改变背景。
-
最简单的方法是使用
await Task.Delay(500);并用async标记您的方法。 -
仅供参考,如果您在生产代码中使用 Thread.Sleep 用于产生线程以外的任何事情,那么您几乎总是在做一些非常错误的事情。线程是用来工作的,而不是睡觉的。