首页 > 解决方案 > 在特定日期后停止 Xamarin 表单中的倒数计时器

问题描述

我是 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'");
    }

这很好用,我想知道如何在倒计时后停止计时器。现在它在倒计时日期之后开始计数。

标签: c#xamarincountdowntimer

解决方案


你可以这样阻止它:

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();
   }
}

推荐阅读