zoukankan      html  css  js  c++  java
  • .NET中各种不同的Timer之间区别

    System.Timer.Timer

    根据命名空间看这个类貌似才是标准的Timer,它提供Interval属性和Elapsed事件。可以每隔一个时间周期触发一次Elapsed事件。在ThreadPool的线程中回调事件处理函数。

    该类也提供对UI线程的支持,可能通过将UI元素设置为SynchronizingObject属性(ISynchronizeInvoke类型,因此只能支持WinForm)让Timer将事件转交给SynchronizingObject的创建线程。

    由于Elapsed事件的触发源是在ThreadPool,因些如果Elapsed事件的Handler如果执行时间大于Interval设定的值,Elapsed事件的Handler便会出现并发执行的情况。

    System.Threading.Timer

    和System.Timer.Timer相比,Threading命名空间下的Timer对Elapsed事件的触发同样是在ThreadPool,但是相对来说比较轻量级,没有SynchronizingObject的支持。 同样也有可能出现Handler并发执行的情况。

    System.Windows.Threading.DispatcherTimer

    这是在WPF中提供的Timer,它的运行环境是在当前的Dispatcher线程,因此可以直接操作当前Dispatcher线程的UI元素。也不会出现Handler并发执行的情况,因为每次对Elapsed的触发会加入到当前Dispatcher线程的队列。然后逐次处理。

  • 相关阅读:
    单分发器
    Python 虚拟环境
    $modal
    memoization
    directive例子2
    UI-Router
    angular-translate
    directive例子1
    FileInputStream/FileOutputStream的应用
    自定义readLine
  • 原文地址:https://www.cnblogs.com/Code-life/p/3468384.html
Copyright © 2011-2022 走看看