我正在寻找一种触发Silverlight事件在特定时间发生的方法。该应用程序将在浏览器之外运行并一直运行。我已经找到一些使用计时器每分钟触发事件,然后检查是否是执行某些操作的正确时间的方法,但这听起来很混乱。是否有一种在2010年9月23日上午10:34触发事件的方法呢?
我正在寻找一种触发Silverlight事件在特定时间发生的方法。该应用程序将在浏览器之外运行并一直运行。我已经找到一些使用计时器每分钟触发事件,然后检查是否是执行某些操作的正确时间的方法,但这听起来很混乱。是否有一种在2010年9月23日上午10:34触发事件的方法呢?
我不相信Silverlight中有这样的功能。如果您不喜欢轮询方法,您可以始终获取DateTime.Now和目标时间之间的差异,并设置一个计时器来等待那么长时间。虽然我不知道这是否可靠。
我不知道有任何控件可以做到你所要求的功能。以下是我熟悉的计时器:
我认为你最好使用一个间隔为30秒的DispatcherTimer,然后将实际时间与预期时间和日期匹配。据我所记,这样的计时器适用于小间隔,因此大间隔会不太准确。(我可能错了)
编辑:MSDN有关计时的说明:“定时器不能保证在时间间隔发生时恰好执行,但它们保证不会在时间间隔之前执行。这是因为 DispatcherTimer操作像其他操作一样放置在 Dispatcher队列中。当DispatcherTimer操作执行取决于队列中的其他作业及其优先级。”
http://blogs.silverlight.net/blogs/msnow/archive/2009/11/09/69731.aspx
Timer
就是完成这项工作的工具,我没有看到它比其他方法不可靠的任何理由。如果能提供一个简单的代码示例,那么这个答案将会更加完善。 - AnthonyWJones