Остановить таймер обратного отсчета в формах Xamarin после определенного дня - PullRequest
0 голосов
/ 21 ноября 2018

Я новичок в C # и мне нужен таймер обратного отсчета.Я использовал этот код с небольшими изменениями.

Ссылка

Оригинальный код ....

DateTime endTime = new DateTime(2018,12,31,0,0,0);
private void button1_Click(object sender, EventArgs e)
{ 
    Timer t = new Timer();
    t.Interval = 500;
    t.Tick +=new EventHandler(t_Tick);
    TimeSpan ts = endTime.Subtract(DateTime.Now);
    label1.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
    t.Start();
}

void  t_Tick(object sender, EventArgs e)
{
    TimeSpan ts = endTime.Subtract(DateTime.Now);
    label1.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
}

Мой код ....

    DateTime endTime = new DateTime(2018,12,31,0,0,0);
    private void countDownTimer()
    {
        Timer t = new Timer();
        t.Interval = 1000;
        t.Elapsed += new ElapsedEventHandler(t_Tick);
        TimeSpan ts = endTime.Subtract(DateTime.Now);
        cTimer = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
        t.Start();
    }

    void t_Tick(object sender, EventArgs e)
    {
        TimeSpan ts = endTime.Subtract(DateTime.Now);
        cTimer = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
    }

Это прекрасно работает, и я хочу знать, как остановить таймер после обратного отсчета.Теперь он рассчитывает после даты обратного отсчета.

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете остановить это так:

DateTime endTime = new DateTime(2018, 11, 21, 12, 31, 0);
public void StartCountDownTimer()
{
   timer = new System.Timers.Timer();
   timer.Interval = 1000;
   timer.Elapsed += t_Tick;
   TimeSpan ts = endTime - DateTime.Now;
   cTimer = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
   timer.Start();
}
string cTimer;
System.Timers.Timer timer;
void t_Tick(object sender, EventArgs e)
{
   TimeSpan ts = endTime - DateTime.Now;
   cTimer = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
   if ((ts.TotalMilliseconds < 0) || (ts.TotalMilliseconds < 1000))
   {
      timer.Stop();
   }
}
...