为什么这个C#计时器不会开火? (根据当前和选择时间设置的间隔)

时间:2012-03-09 21:56:24

标签: c#

我正在尝试根据日期时间选择器设置的时间设置计时器的勾选警报。但是我根本得不到勾号警告。

if (dateTimePicker1.Value >= DateTime.Now)
    {
        sendOrder.Interval =(int) (dateTimePicker1.Value.Ticks-DateTime.Now.Ticks);
        sendOrder.Enabled = true;
    }

在上面的代码中,我根据datetimepicker的时间差 - 当前时间设置了滴答时间。我在这个问题上做错了什么?

3 个答案:

答案 0 :(得分:3)

DateTime.Ticks Property

  

单个刻度表示一百纳秒或一百万分之一秒。一毫秒内有10,000个滴答。

Timer.Interval Property

  

时间,以毫秒为单位

所以你的计时器正在开火;间隔刚刚减少10,000倍。

您可以使用TimeSpan.TotalMilliseconds Property来获取两个DateTime值之间的差异(以毫秒为单位),而不是使用刻度线进行操作:

sendOrder.Interval = (dateTimePicker1.Value - DateTime.Now).TotalMilliseconds;

答案 1 :(得分:3)

假设您使用System.Timers.Timer,Interval以毫秒为单位,而您指定的是滴答。在1毫秒内有10,000个滴答。

请改为尝试:

sendOrder.Interval = (int)(dateTimePicker1.Value.Ticks - DateTime.Now.Ticks) / 10000;

答案 2 :(得分:2)

Ticks的间隔为100纳秒。一毫秒内有10,000个刻度。 Interval以毫秒为单位。所以这显然是一个错误。