c#中dispatchertimervstimer

c#中dispatchertimervstimer

ID:8811336

大小:15.81 KB

页数:2页

时间:2018-04-08

c#中dispatchertimervstimer_第1页
c#中dispatchertimervstimer_第2页
资源描述:

《c#中dispatchertimervstimer》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、DispatcherTimer类集成到按指定时间间隔和指定优先级处理的Dispatcher队列中的计时器。命名空间: System.Windows.Threading在每个Dispatcher循环的顶端重新计算DispatcherTimer。不能保证会正好在时间间隔发生时执行计时器,但能够保证不会在时间间隔发生之前执行计时器。这是因为DispatcherTimer操作与其他操作一样被放置到Dispatcher队列中。何时执行DispatcherTimer操作取决于队列中的其他作业及其优先级。如果System.Timers.Timer用于WP

2、F应用程序,则值得注意的是System.Timers.Timer运行于不同于用户界面(UI)线程的其他线程上。为了访问用户界面(UI)线程上的对象,需要使用Invoke或BeginInvoke将操作发布到用户界面(UI)线程的Dispatcher上。使用DispatcherTimer而不是使用System.Timers.Timer的原因是DispatcherTimer与Dispatcher运行于相同的线程,并且可以在DispatcherTimer上设置DispatcherPriority。每当将对象方法绑定到计时器时,DispatcherT

3、imer都将使对象保持活动状态。Timer类在应用程序中生成定期事件。命名空间: System.TimersTimer组件是基于服务器的计时器,它使您能够指定在应用程序中引发Elapsed事件的周期性间隔。然后可通过处理这个事件来提供常规处理。例如,假设您有一台关键性服务器,必须每周7天、每天24小时都保持运行。可以创建一个使用Timer的服务,以定期检查服务器并确保系统开启并在运行。如果系统不响应,则该服务可以尝试重新启动服务器或通知管理员。基于服务器的Timer是为在多线程环境中用于辅助线程而设计的。服务器计时器可以在线程间移动来处理引

4、发的Elapsed事件,这样就可以比Windows计时器更精确地按时引发事件。基于Interval属性的值,Timer组件引发Elapsed事件。您可以处理这个事件来执行必要的处理。例如,假设您有一个联机销售应用程序,它持续向一个数据库投递销售订单。编译要传送的指令的服务成批处理订单,而不是单独地处理每份订单。可以使用Timer每30分钟启动一次批处理。说明当AutoReset设置为false时,Timer只在第一个Interval过后引发一次Elapsed事件。若要保持以Interval时间间隔引发Elapsed事件,请将AutoRese

5、t设置为true。在.NETFramework2.0版及更早版本中,Timer组件捕获Elapsed事件的事件处理程序所引发的所有异常并禁止显示这些异常。在将来的.NETFramework版本中,此行为可能会有更改。Elapsed事件在ThreadPool线程上引发。如果Elapsed事件的处理时间比Interval长,在另一个ThreadPool线程上将会再次引发此事件。因此,事件处理程序应当是可重入的。说明在一个线程调用Stop方法或将Enabled属性设置为false的同时,可在另一个线程上运行事件处理方法。这可能导致在计时器停止之后

6、引发Elapsed事件。Stop方法的代码示例演示了一种避免此争用条件的方法。Elapsed事件可在调用Dispose方法后发生,因为计时器将Elapsed事件排入队列供线程池线程执行。设置SynchronizingObject属性时,这尤为明显。解决此争用条件的一种方法是:设置一个标志,通知Elapsed事件的事件处理程序忽略随后的事件。如果和用户界面元素(如窗体或控件)一起使用Timer,请将包含有Timer的窗体或控件赋值给SynchronizingObject属性,以便将此事件封送到用户界面线程中。Timer在运行时是不可见的。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。