闹钟定时器
问题描述:
我想制作一个简单的程序让它在特定的时间运行。这里是我的代码:闹钟定时器
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个闹铃的截图:http://i.imgur.com/ipW7H.png
其中一半是错误的。 W代表什么时候应该工作,N代表现在。有时这种差异可能很大,为什么呢?如何解决这个问题,或者有更好的方法来做出简单的警报?
答
System.Windows.Forms.Timer
s不准确,特别是对于大数字。不要计算Interval
的值,而应将其设置为某个常量,如1000
。
答
呀,我试图计时器的时间间隔设置为1000,但它似乎是错误的,检查它的每一秒。我想要一个更好的方法,所以我想出了这个代码,它不能正常工作。 – irondsd 2012-02-11 09:37:23
@irondsd:不要担心,即使看起来有点骇人听闻,每秒一次也不会伤害你的处理器。 (除非你运行几个星期,否则它可能看起来有点不对,但为什么你不使用Task Scheduler?'taskschd.msc') – Ryan 2012-02-11 16:38:35
我会尝试使用它。感谢帮助。 – irondsd 2012-02-12 17:28:37