定时器
System.Threading.Timer
因为Timer回调不在创建他的线程上,所以,如果要修改页面线程上的对象必须使用Dispatcher.BeginInvoke。
回调方法只能在创建计时器同时指定,不能修改。
使用系统提供的线程池服务。
必须保持对象的引用,并且没有停止、挂起、开始等操作。
System.Windows.Threading.DispatcherTimer
DispatcherTimer timer = new DispatcherTimer();timer.Tick += (O,E)=>{this.textbox.text=DateTime.Now.ToString();};timer.Interval = new TimeSpan(0, 0, 1);timer.Start();DispatcherTimer 与当前线程一样,是排列在线程工作项的队列中的。
是按线程间隔和优先级调用的。
有停止、挂起、开始等操作,是Silverlight推荐计时器实现方式。
以上两种定时器实现呼吸操作,都是连续计时,计时结束时,回调方法,同时开始下一次计时。
但第二种定时器可以在回调方法内部先停止计时器,执行完后再开始计时器,以规避上述问题。
下面是另一种实现方法,是通过Silverlight的特性——时间线,来达到目的。
System.Windows.Media.Animation.Timeline
Timeline是一个抽象类,不可实列化,其子类System.Windows.Media.Animation.Storyboard可实现相同的效果。AutoReverse 获取或设置一个值,该值指示时间线在完成向前迭代后是否按相反的顺序播放。 (继承自 Timeline。)BeginTime 获取或设置此 Timeline 将要开始的时间。 (继承自 Timeline。)Children 获取子 Timeline 对象的集合。Dispatcher 获取与此对象关联的 Dispatcher。 (继承自 DependencyObject。)Duration 获取或设置此时间线播放的时间长度,而不是计数重复。 (继承自 Timeline。)FillBehavior 获取或设置一个值,该值指定动画在其活动期结束后的行为方式。 (继承自 Timeline。)RepeatBehavior 获取或设置此时间线的重复行为。 (继承自 Timeline。)SpeedRatio 获取或设置此 Timeline 的时间相对于其父级的前进速率。 (继承自 Timeline。)动画中的时间线,与定时器类似,可以直接定义到XAML中。
与上两种方式不同,时间线是一次计时、一次起停。并不会连续执行。停止时回调方法。
需要在回调方法中重新启动时间线。
浙公网安备 33010602011771号