让我的winform应用程序暂停1-2秒

时间:2015-04-27 16:56:39

标签: c# visual-studio-2012

我目前正在做一个需要在循环中显示少量数据的项目。我需要显示一个数据,然后暂停一秒钟,然后显示另一个数据并暂停,依此类推。如果我加 System.Threading.Thread.Sleep(1000) 我的应用程序将不会加载几秒钟并显示最终值。我还能怎么编码?

int[] val = { 200, 400, 400, 300, 500, 250, 100, 600, 700, 450, 550, 300, 500, 600, 150, 250 };

        high = val.Max();
        low = val.Min();
        for (int i = 0; i < 50; i++)
        {
            ovalShape1.FillColor = getColor(val[0]+ i*5);

            ovalShape2.FillColor = getColor(val[1]+ i*3);
            ovalShape3.FillColor = getColor(val[2]);
            ovalShape4.FillColor = getColor(val[3]);
            ovalShape5.FillColor = getColor(val[4]);
            ovalShape6.FillColor = getColor(val[5]);
            ovalShape7.FillColor = getColor(val[6] + i * 2);
            ovalShape8.FillColor = getColor(val[7] + i * 4);
            ovalShape9.FillColor = getColor(val[8] + i * 2);
            ovalShape10.FillColor = getColor(val[9]);
            ovalShape11.FillColor = getColor(val[10]);
            ovalShape12.FillColor = getColor(val[11]);
            ovalShape13.FillColor = getColor(val[12]);
            ovalShape14.FillColor = getColor(val[13]);
            ovalShape15.FillColor = getColor(val[14]);
            ovalShape16.FillColor = getColor(val[15]);

        }

getColor()是一个返回一些颜色的函数。此代码仅用于测试。在每次循环之后,我需要椭圆的颜色保持一秒钟然后在下一循环中改变颜色。

2 个答案:

答案 0 :(得分:2)

使用System.Windows.Forms.Timer并将时间间隔设置为1000 ms。 在每个刻度线上,显示您提到的其他数据。

答案 1 :(得分:2)

您想使用timer而不是系统睡眠。 DoEvents也可能是一本很好的读物。简单的语法示例:

    System.Timers.Timer timer = new System.Timers.Timer(2000); 
    timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);

    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        MessageBox.Show("testing the timer"); //load your item here
    }