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; 
}

 

posted on 2019-04-10 11:15  唐宏昌  阅读(830)  评论(0编辑  收藏  举报

导航