C#减慢随机数GUI显示

VAA*_*AAA 1 c# winforms

我有一个应用程序生成随机数约20秒,并在屏幕上的标签中动态显示随机数.

我想在相同的标签中显示数字但是然后减慢数字的显示,这样在停止过程前5秒钟,数字的显示应该越来越慢,直到它停在最后的数字中.像抽奖一样.

任何线索?

Eri*_*ert 12

我可以先告诉你该做什么.不要使用Thread.Sleep- 这样做几乎总是"最糟糕的做法",并会使您的UI无响应.

如果你Thread.Sleep在第二个线程上使用,正如mcl建议的那样,你不会冻结你的UI,但是你正在烧掉一个非常昂贵的线程来做很少的工作.

如果您使用的是C#4或更早版本,那么我会创建一个定时器,例如每秒四次.处理tick事件,如果自上次tick事件已经过了足够的时间,则更改标签.或者,每次滴答时更改计时器的间隔.

如果您使用的是C#5,则可以使用await Task.Delay(x):

async void Animate()
{
    int delay = 5;
    for(int i = 1; i < 10; ++i)
    {
       UpdateLabel();
       await Task.Delay(delay);
       delay = delay * 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以现在你开始延迟5ms,然后是10,然后是20 ......