我正在使用常规的foreach循环,我想等到计时器结束然后继续下一个案例。我该怎么做?
foreach (int i in TimeImage)
{
Timer timer1 = new Timer();
timer1.Tick += new EventHandler(showImage);
timer1.Interval = i * 1000;
timer1.Start();
showImage();
}
答案 0 :(得分:0)
如果我对你想要的东西的理解是正确的(以特定顺序显示图像)那么for循环可能不会按照你想要的方式工作。计时器不会阻止循环 - 无论如何都是这样的。
*您不希望以这种方式阻止您的UI(或根本不阻止)。
因为您已经为每个图像分配了一个计时器,所以只需将间隔的分配从开始分成两个for循环。
List<Timer> timers = new List<Timer>();
//i'm assuming that TimeImage is a list?
for (int i=1; i<=TimeImage.Count(); i++)
{
Timer timer1 = new Timer();
timer1.Tick += new EventHandler(showImage);
timer1.Interval = i * 1000;
timers.add(timer1);
//note showimage should know which particular image is to be loaded
//showimage should also stop the last timer that was triggered
}
foreach (Timer atimer in timers)
{
atimer.Start();
}