我目前正在做一个需要在循环中显示少量数据的项目。我需要显示一个数据,然后暂停一秒钟,然后显示另一个数据并暂停,依此类推。如果我加 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()是一个返回一些颜色的函数。此代码仅用于测试。在每次循环之后,我需要椭圆的颜色保持一秒钟然后在下一循环中改变颜色。
答案 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
}