我正在尝试找到一种方法来触发Silverlight事件在一天中的特定时间发生。该应用程序将在浏览器外运行,并将一直运行。我发现一些方法使用计时器每分钟触发一个事件,然后检查是否是正确的时间做某事,但这听起来很混乱。是否有某种方法可以在2010年9月23日上午10点34分举行活动?
答案 0 :(得分:2)
如果您希望计时器在应用程序重启后继续存在,我建议使用轮询并在某处保留计划任务。
否则只需将计时器间隔设置为当前时间和预定时间之间的时间间隔。
答案 1 :(得分:0)
我不相信Silverlight中有这样的功能。如果您不喜欢轮询方法,您可以始终获取DateTime.Now与目标时间之间的差异,并为该长度设置计时器。虽然我不知道会有多可靠。
答案 2 :(得分:0)
我不知道有任何控制符合你的要求。以下是我熟悉的计时器:
我认为您最好的选择是使用DispatcherTimer,间隔为30秒,然后将实际时间与预期的时间和日期相匹配。 从我记忆中来看,这些定时器用于小间隔,因此较大的间隔将不太准确。 (我在纠正中发言)
编辑:MSDN remarks on timing:“定时器不能保证在时间间隔发生时完全执行,但保证在时间间隔发生之前不执行。这是因为{{与其他操作一样,操作放在DispatcherTimer队列上。当DispatcherTimer操作执行时,它依赖于队列中的其他作业及其优先级。“
答案 3 :(得分:0)
感谢您的回复。我仍然没有找到任何东西,但最终使用StoryBoard作为计时组件,因为DispatcherTimer在与UI相同的线程中运行,而StoryBoard则没有。
您可以在此处详细了解两者之间的比较。
http://blogs.silverlight.net/blogs/msnow/archive/2009/11/09/69731.aspx