WPF常见的两种定时器

先来说一下是哪两种定时器

先说明一下WPF界面是没有timer控件的

第一种:DispatcherTimer定时器,可以说是专门为WPF界面设计的定时器。因为这个定时器是和UI都在同一线程上的。

第二种: System.Timers.Timer定时器,这种定时器是和UI非同一个线程。

使用方法

DispatcherTimer定时器:

先添加命名空间的引用:

using System.Windows.Threading;

实例化DispatcherTimer定时器:

DispatcherTimer timer = new DispatcherTimer();

在窗体的构造函数里面设置定时器的一些参数

 timer.Interval = new TimeSpan(0,1,0);//设置的间隔为一分钟
 timer.Tick += timer_Tick;
 timer.IsEnabled = true;

在需要开始定时器的地方,开启定时器

 timer.Start();

System.Timers.Timer定时器

实例化System.Timers.Timer定时器

 System.Timers.Timer timer = new System.Timers.Timer();

在窗体的构造函数里面设置定时器的一些参数

timer.Interval = 60000;//这里设置的间隔时间为1分钟
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.AutoReset = true;//设置timer_Elapsed是执行一次(false)还是一直执行(true)
timer.Enabled = true;

在需要开始定时器的地方,开启定时器

 timer.Start();

BUT,以为到这里System.Timers.Timer定时器就可以使用了吗,那你也太小看它了。由于我们在UI层使用的定时器,但是这个定时器和UI不属于同一线程,所以运行的时候就会报错。
在这里插入图片描述
那么解决方法有什么呢:(只有思路,比较繁琐,未实现)
将UI暂停一会会,先让timer运行完。

两种定时器的优缺点

DispatcherTimer定时器

适合WPF的UI层

System.Timers.Timer定时器

和UI不属于同一线程,存在资源占用情况,解决方法较繁琐。

发布了110 篇原创文章 · 获赞 21 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/make_1998/article/details/96764960