C# Как запустить несколько таймеров в цикле. один таймер за другим

Я хочу запустить таймер обратного отсчета (DispatchTimer) несколько раз в цикле, один за другим. Я хочу дождаться остановки одного таймера, а затем запустить другой.

Я собираюсь попробовать что-то вроде этого:

public TimeSpan CurrentTimeSpan;
private void RunInterval()
{
    for (int i = 0; i < 10; i++)
    {
        RunTimer(new TimeSpan(0, 0, 0, 30));        

    }
}
private void RunTimer(TimeSpan Timer)
{
    DispatcherTimer timer1 = new DispatcherTimer();
    timer1.Interval = new TimeSpan(0, 0, 0, 1);
    CurrentTimeSpan = Timer;
    timer1.Tick += Timer1OnTick;

}
private void Timer1OnTick(object sender, object o)
{
    DispatcherTimer timer = (DispatcherTimer) sender;
    CurrentTimeSpan = CurrentTimeSpan.Subtract(timer.Interval);
    if (CurrentTimeSpan.TotalSeconds == 0)
    {
        timer.Stop();
    }
}

Моя проблема в том, что метод RunInterval или RunTimer не ждет, пока таймер не остановится.

Что я могу с этим поделать?

1 ответ

Может как то так?

   private int hitCount = 0;
   public TimeSpan CurrentTimeSpan;  

    private void RunInterval()
    {
        RunTimer(new TimeSpan(0, 0, 0, 30));
    }
    private void RunTimer(TimeSpan Timer)
    {
        DispatcherTimer timer1 = new DispatcherTimer();
        timer1.Interval = new TimeSpan(0, 0, 0, 1);
        CurrentTimeSpan = Timer;
        timer1.Tick += Timer1OnTick;

    }
    private void Timer1OnTick(object sender, object o)
    {
        DispatcherTimer timer = (DispatcherTimer)sender;

        if(hitCount == 10)
        {
             timer.Tick -= Timer1OnTick
        }

        CurrentTimeSpan = CurrentTimeSpan.Subtract(timer.Interval);
        if (CurrentTimeSpan.TotalSeconds == 0)
        {
            timer.Stop();
        }
    }

Вместо того, чтобы создавать циклы, просто следите за событием, сколько раз его ударили, а затем отцепите событие, как только эта цель будет достигнута.

Другие вопросы по тегам