为什么报警的开始时间不应该是DateTime.Now?

时间:2013-06-20 16:16:04

标签: c# windows-phone-7 alarm

我在使用闹钟做app时遇到异常,但不幸的是我有一个例外,因为它没有答案。

alarm = new Alarm(TitleBox.Text);
//alarm.BeginTime = DateTime.Now;
alarm.BeginTime=DateTime.Now.AddSeconds(5);
alarm.Content = "Alarm scheduled for a note.Please check it right now.";
alarm.ExpirationTime = expiryTime;
alarm.RecurrenceType = RecurrenceInterval.None;
IsAlaramOn = true;
ScheduledActionService.Add(alarm);

为什么在开始时间为DateTime.Now时会发生异常? 为什么我需要添加几秒钟?

1 个答案:

答案 0 :(得分:0)

虽然我对Windows Phone 7开发并不十分熟悉,但我认为,从逻辑上讲,警报不会接受当前时间,因为代码运行所需的时间会使当前时间超过警报时间,甚至几毫秒。

如果你考虑一下,计算机会考虑自纪元以来的毫秒数,而不是几小时/分钟/秒。因此,即使从警报设置为“现在”后经过一毫秒,警报也会过期。

然后,Microsoft开发人员会设置Alarm类,为“now”的警报设置抛出异常,因为这种差异可能是因为警报不会追溯性地触发。 (如果它具有追溯性,那么他们必须进一步提供确定它会在什么条件下这样做,但收效甚微。)

但是,我对Windows Phone 7平台并不熟悉,所以如果有人提供相反的信息,请提供帮助!