c#使用委托创建三个不同时间启动的定时器
时间: 2024-10-20 10:04:51 浏览: 9
在C#中,你可以使用委托和`System.Timers.Timer`类来创建三个不同时间启动的定时器。委托是一种类型,它封装了对方法的引用,可以像其他类型一样传递和使用。以下是创建这种定时任务的一个简单示例:
首先,定义一个委托,用于表示处理定时事件的方法:
```csharp
public delegate void TimerEventHandler(object sender, ElapsedEventArgs e);
```
然后,设置一个方法来处理定时器的完成事件:
```csharp
private void OnTimerElapsed(object source, ElapsedEventArgs e)
{
Console.WriteLine($"Timer {source} elapsed at time {DateTime.Now}");
}
```
接着,创建并配置三个不同的定时器,并将它们的`Elapsed`事件委托给刚才定义的方法:
```csharp
using System;
using System.Timers;
class Program
{
private static Timer timer1;
private static Timer timer2;
private static Timer timer3;
public static void Main()
{
// 定义起始时间和间隔
DateTime startTime1 = DateTime.Now.AddSeconds(5); // 第一个定时器5秒后开始
DateTime startTime2 = DateTime.Now.AddSeconds(10); // 第二个定时器10秒后开始
int interval1 = 2; // 第一个定时器每隔2秒触发
int interval2 = 5; // 第二个定时器每隔5秒触发
// 创建第一个定时器
timer1 = new Timer(interval1 * 1000); // 单位为毫秒
timer1.Elapsed += OnTimerElapsed;
timer1.Start();
// 等待第一个定时器开始后设置第二个
timer1.Interval = 0; // 防止第一个定时器重复计时
timer1.AutoReset = false; // 设置为单次计时
timer1.Enabled = false; // 关闭第一个定时器
timer1.StartTime = startTime1; // 将开始时间设为预定时间
timer1.Interval = interval1 * 1000; // 重新设置间隔
timer1.Elapsed += OnTimerElapsed;
timer1.Enabled = true; // 开启第二个定时器
// 创建第三个定时器,这里仅作为演示,因为前两个已经按照顺序设置好了
timer3 = new Timer(interval2 * 1000);
timer3.Elapsed += OnTimerElapsed;
timer3.StartTime = startTime2;
timer3.Interval = interval2 * 1000;
timer3.Enabled = true; // 同样开启第三个定时器
}
}
```
运行这个程序,你会看到三个定时器按照预设的时间依次启动。
阅读全文