手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#中的Timer和DispatcherTimer使用实例
C#中的Timer和DispatcherTimer使用实例
摘要:Timer组件是基于服务器的计时器,通过设置时间间隔Interval,周期性的触发Elapsed事件。用法如下:复制代码代码如下:class...

Timer组件是基于服务器的计时器,通过设置时间间隔Interval,周期性的触发Elapsed事件。

用法如下:

复制代码 代码如下:

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操作取决于队列中其他作业及其优先级。

在WPF应用程序中

Timer的Elapsed事件绑定的方法没有运行在UI线程上,如果要访问UI线程上的对象,需要利用Invoke或BeginInvoke 将操作发布到UI线程的Dispatcher上。

用法如下:

复制代码 代码如下:

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。

用法

复制代码 代码如下:

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();

【C#中的Timer和DispatcherTimer使用实例】相关文章:

C#枚举数值与名称的转换实例分享

c#各种Timer类的区别与用法介绍

为何Linq的Distinct实在是不给力

C#位移的介绍与例子

C# 对XML操作入门实例

解析C#中@符号的几种使用方法详解

c# Base关键字的使用

在C#中 webbrowser的使用心得

C#中无边框窗体移动的简单实例

C# Dictionary的使用实例代码

精品推荐
分类导航