源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#中的Timer和DispatcherTimer使用实例

  • 时间:2020-02-06 16:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中的Timer和DispatcherTimer使用实例
Timer组件是基于服务器的计时器,通过设置时间间隔Interval,周期性的触发Elapsed事件。 [b]用法如下:[/b]
[u]复制代码[/u] 代码如下:
class Program {         static System.Timers.Timer Timer1 = new System.Timers.Timer();         static void Main() {             Timer1.Interval = 1000;             Timer1.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler);                        Timer1.Start();             Console.ReadLine();         }         static void PeriodicTaskHandler(object sender, ElapsedEventArgs e) {         string str =Thread.CurrentThread.ManagedThreadId.ToString()+"##" +"Timer1" +"##" + e.SignalTime.ToLongTimeString();             Console.WriteLine(str);         }     }
DispatcherTimer:Dispatcher队列中的计时器,不能保证正好在设置的时间间隔发生时执行计时器,但能保证不会在时间间隔发生之前执行计时器。这是因为  DispatcherTimer的操作也是放置在Dispatcher队列中的,何时执行DispatcherTimer操作取决于队列中其他作业及其优先级。 [b]在WPF应用程序中[/b] Timer的Elapsed事件绑定的方法没有运行在UI线程上,如果要访问UI线程上的对象,需要利用Invoke或BeginInvoke 将操作发布到UI线程的Dispatcher上。 [b]用法如下:[/b]
[u]复制代码[/u] 代码如下:
private void Button_Click(object sender, RoutedEventArgs e) {             Timer timer = new Timer();             timer.Interval = 1000;             timer.Start();             timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);         }         void timer_Elapsed(object sender, ElapsedEventArgs e) {             i++;             this.Dispatcher.Invoke(new Action(() => {                 test.Content = i.ToString();             }));         }         private int i = 0;
DispatcherTimer与Dispatcher都运行于相同的线程,并且可以在DispatcherTimer上设置DispatcherPriority。 [b]用法[/b]
[u]复制代码[/u] 代码如下:
private void Button_Click(object sender, RoutedEventArgs e) {             timer.Interval = TimeSpan.FromMilliseconds(1000);             timer.Tick += new EventHandler(timer_Tick);             timer.Start();         }         void timer_Tick(object sender, EventArgs e) {             i++;             Test.Content = i.ToString();         }         private int i = 0;         private DispatcherTimer timer = new DispatcherTimer();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部