报警计时器

本文关键字:计时器 | 更新日期: 2023-09-27 18:24:08

我想制作一个简单的程序,让它在特定的时间内运行。这是我的代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Alarm ft = new Alarm(dateTimePicker1.Value);
    }
}
public class Alarm
{
    public Timer reminder = new Timer();
    public DateTime RemindAt;
    public Alarm(DateTime time)
    {
        RemindAt = time;
        reminder.Interval = (int)(RemindAt - DateTime.Now).TotalMilliseconds;
        reminder.Start();
        reminder.Tick += new EventHandler(reminder_Tick);
    }
    void reminder_Tick(object sender, EventArgs e)
    {
        if (RemindAt <= DateTime.Now)
        {
            reminder.Dispose();
            MessageBox.Show("W: " + RemindAt.ToString("dd MMMM yyyy, HH:mm:ss") + "'n" + "N: " + DateTime.Now.ToString("dd MMMM yyyy, HH:mm:ss") + "'n'n");
        }
    }

正如你所看到的,我使用计时器,但它似乎很不准确,我不知道为什么。以下是6个警报的屏幕截图:https://i.stack.imgur.com/IGzIh.png

其中一半是错的。W代表它应该工作的时候,N代表现在。有时差异可能很大,为什么会这样?如何解决这个问题,或者可能有更好的方法来发出简单的警报?

报警计时器

System.Windows.Forms.Timer不精确,尤其是对于大数字。与其计算Interval的值,不如将其设置为某个常量,比如1000

看看Windows任务调度

基本上创建EXE并让Windows处理运行时间。

如何通过UI

以编程方式安装