表单关闭后,保持计时器代码正常工作

时间:2017-12-04 16:47:03

标签: c#

我目前正在制作一个有过期日期的程序,我希望我的计时器能够在程序关闭时工作,这是我的代码:

    private int counter = 30;
    private void Form2_Load(object sender, EventArgs e)
    {
        timer1.Interval = 1000; // 1 day
        timer1.Tick += timer1_Tick;
        timer1.Start();
    }

    private void timer1_Tick_1(object sender, EventArgs e)
    {

            counter--;
            if (counter == 0)
                timer1.Stop();
            label3.Text = counter.ToString();

    }

   private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {

    }

如果有可能的话,我会很高兴知道如何做到这一点

1 个答案:

答案 0 :(得分:0)

如果计时器继续计时,即使程序关闭,也不能使用计时器。改为使用DateTime类。

将DateTime.Now的值保存到磁盘(例如,使用应用程序设置),然后,为了检查到期时间,再次加载该值,并将其与当前时间进行比较:

假设startOfPeriod是您的有效期的开始:

if( startOfPeriod.AddDays( 30 ) < DateTime.Now )
{
// Time has expired
}

注意:请注意,在此方法中,您的软件可能会在当天的宽度中过期。如果您不希望发生这种情况,请将上述if表达式替换为:

if( startOfPeriod.Date.AddDays( 30 ) < DateTime.Now.Date )