zoukankan      html  css  js  c++  java
  • WPF 中 DispatcherTimer 计时器

      在 WPF 中涉及到界面操作的计时器时,一定要使用 DispatcherTime,DispatcherTimer是为 WPF 专门设计的,不然的话会提示界面资源被其他线程所拥有而无法更新界面。DispatcherTimer 是在 UI 线程跑的可以直接更新 UI ,Timer 是在非UI线程跑的

      DispatcherTimer 定时器不是单独开启一个线程来运行定时器方法,而是和主线程是同一个线程,只是通过改变运行优先级来实现定时器,当定时器时间到了,主线程就转去执行定时器方法。因此DispatcherTimer定时器不要用来实现执行时间长的任务,不然会使主线程很卡,导致WPF界面很难看,用户不友好!

      DispatcherTimer 定时器第一次执行是先等待指定周期的时间再执行定时器方法,而不是先执行再计时;然后,执行完定时器方法后,再等待指定周期的时间。如:如执行周期T = 5s, 定时器方法内的代码所需执行时间为R = 4s;当启动定时器时:先等待5s,然后执行定时器方法(所需时间4s),然后再等待5s,再执行定时器方法(所需时间4s).........

    示例

     System.Windows.Threading.DispatcherTimer  dispatcherTimer =  new System.Windows.Threading.DispatcherTimer();
    
     // Tick 超过计时器间隔时发生。
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
    
     // Interval 获取或设置计时器刻度之间的时间段
    dispatcherTimer.Interval = new TimeSpan(0,0,1);
    
    dispatcherTimer.Start();
    
    
    private void dispatcherTimer_Tick(object sender, EventArgs e)//计时执行的程序
    { 
        lblSeconds.Content = DateTime.Now.Second; 
    }
  • 相关阅读:
    初识CC_MVPMatrix
    opengl启动过程
    http协议
    sockt套接字编程
    lua元表
    Codeforces 1203F1 Complete the Projects (easy version)
    CodeForces 1200E Compress Words
    CodeForces 1200D White Lines
    HDU 6656 Kejin Player
    HDU 6651 Final Exam
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/10682247.html
Copyright © 2011-2022 走看看