Таймер обратного отсчета C# тогда сделайте что-нибудь

Посмотрел везде, но везде я смотрю есть другой способ сделать таймер обратного отсчета. Наконец-то нашел простой код. Как мне заставить это сделать что-то, когда время истекло.

Эта часть находится рядом с InitializeComponent();

timerlabel1.Text = TimeSpan.FromMinutes(720).ToString();

private void countdownTimer()
{
    var startTime = DateTime.Now;

    var timer = new Timer() { Interval = 1000 };

    timer.Tick += (obj, args) =>
        timerlabel1.Text =
            (TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
            .ToString("hh\\:mm\\:ss");

    timer.Enabled = true;
}

Здесь мне нужна помощь, как мне заставить ее что-то делать, когда время истекло. Я пытался, если timer.Enabled =false; Сделай это. Не могу понять это.

4 ответа

Решение

Решение: вы можете назначить общее количество секунд [TotalMinutes*60] в некоторую переменную и decrement каждый раз Timer Tick событие поднимается.

если totalseconds значение становится zero затем stop таймер по телефону timer.Stop() метод.

Попробуй это:

       public int tootalsecs = 720 * 60;
       private void countdownTimer()
       {
         var startTime = DateTime.Now;

         var timer = new Timer() { Interval = 1000 };

         timer.Tick += (obj, args) =>
         {
            if (tootalsecs==0)
            {
                timer.Stop();
            }
            else
            {
                timerlabel1.Text =
               (TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
                   .ToString("hh\\:mm\\:ss");
                tootalsecs--;
            }
        };
             timer.Start();
        }

Попробуйте это может работать для вас

var timer=new Timer();
timer.Interval=1000;
timer.tick += timer_Tick;
timer.Start();
int i=0;

void timer_Tick(object sender, EventArgs e)
{
if(i<TimeSpan.FromMinutes(720))
{
 timerlabel1.Text =
            (TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
            .ToString("hh\\:mm\\:ss");
}
else
{
timer.Stop();
/* do other work Here */
}
i++;
}

Попробуйте с этим может работать на вас.

Как есть пара Timer доступные классы (System.Windows.Forms.Timer, System.Threading.Timer а также System.Timers.Timer) Я посоветую вам пойти с System.Timers.Timer,

Это обеспечивает Elapsed событие, а не Tick событие. Это то, что вы ищете.

// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(10000);

// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

// Set the Interval to 2 seconds (2000 milliseconds).
aTimer.Interval = 2000;
aTimer.Enabled = true;

Вы можете попробовать сделать, как показано ниже.

Инициализировать в глобальном масштабе.

var target;
timerlabel1.Text =target= DateTime.Now.Add(TimeSpan.FromMinutes(720));

Добавить таймер и в timer1_Tick напишите код ниже

var span = targetTime - DateTime.Now;

 if (span.TotalSeconds > 0)
  {
//it will continue till the time ends. 
    var temp = span.ToString();
    temp=temp.Substring(0, 8);
    timerlabel1.Text = temp;
  }
 else
//do your work here

Не забудьте подтвердить ответ или пометить как ответ, если он близок к вашим потребностям

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