
C#中Timer与DispatcherTimer的使用示例
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本文章详细介绍了在C#编程语言环境下,如何应用Timer和DispatcherTimer类来实现定时任务,并提供了多个实用的代码示例。
在C#编程中,`Timer` 和 `DispatcherTimer` 是两种常见的定时器类型,在不同的应用场景中有各自的优势。
首先介绍的是 `System.Timers.Timer` 类型的计时器,它适用于多线程环境,并且不直接与特定用户界面(UI)线程关联。通过设置 `Interval` 属性可以定义周期性触发事件的时间间隔。例如:
```csharp
class Program {
static System.Timers.Timer Timer1 = new System.Timers.Timer();
static void Main() {
Timer1.Interval = 1000;
Timer1.Elapsed += PeriodicTaskHandler; // 添加处理方法
Timer1.Start();
Console.ReadLine();
}
static void PeriodicTaskHandler(object sender, ElapsedEventArgs e) {
执行周期性任务
}
}
```
这里,`System.Timers.Timer` 的 `Elapsed` 事件会在后台线程中触发。如果需要更新UI界面,则必须通过使用 `Invoke` 或者 `BeginInvoke` 方法将操作发布到UI线程。
相比之下,对于WPF或Windows Forms等用户界面应用来说,更适合选择的是 `DispatcherTimer` 类型的计时器。这个类型的定时器在调度程序队列中执行,并且它的执行依赖于UI线程的安排,因此可能不会严格按照设置的时间间隔来触发事件,但可以确保它不会提前发生。这里提供一个使用该类的例子:
```csharp
private void Button_Click(object sender, RoutedEventArgs e) {
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = 1000;
timer.Start();
}
void Timer_Elapsed(object sender, EventArgs e) { // 定时器事件处理方法
这里的操作会自动在UI线程上执行,可以直接修改UI元素
}
```
此外,`DispatcherTimer` 支持设置 `DispatcherPriority` 属性来控制计时器回调的优先级。例如:
```csharp
private DispatcherTimer timer = new DispatcherTimer();
private void Button_Click(object sender, RoutedEventArgs e) {
timer.Interval = TimeSpan.FromMilliseconds(1000);
timer.Tick += Timer_Tick; // 添加处理方法
timer.Start();
}
void Timer_Tick(object sender, EventArgs e) {
UI更新操作
}
```
在此示例中,`Timer_Tick` 方法会在UI线程上执行,并且可以直接修改UI元素的属性或状态。
总的来说,如果任务是后台运行或者不需要与用户界面交互,则更适合使用 `System.Timers.Timer` 类型。而当需要在UI上下文中进行操作时,选择 `DispatcherTimer` 会更加合适。
全部评论 (0)


