using System;
using System.Collections.Generic;
using System.Timers;
namespace ConsoleApplication3
{
public class MyTask
{
public string TaskName { get; set; }
}
public class MyTimer : Timer
{
public MyTask Task { get; set; }
public MyTimer(MyTask task)
{
Task = task;
this.Elapsed += new System.Timers.ElapsedEventHandler((s, e) => TimerExec(s, e));
}
private void TimerExec(object sender, System.Timers.ElapsedEventArgs e)
{
System.Timers.Timer timer = (System.Timers.Timer)sender;
Console.WriteLine("Timer Interval: {0}, task: {1}", timer.Interval, Task.TaskName);
}
}
class Program
{
static void Main(string[] args)
{
List<MyTask> list = new List<MyTask>()
{
new MyTask(){ TaskName="任务1" },
new MyTask(){ TaskName="任务2" }
};
int i = 1;
foreach (MyTask task in list)
{
MyTimer timer = new MyTimer(task);
timer.Interval = i * 3000;
timer.Enabled = true;
timer.Start();
i++;
}
Console.Read();
}
}
}
如上就好, 只能继承 Timer 类, 再加上参数。
有些博客里写的事件再加一个参数没用, 最终的参数全变成了最后一个,只能用于只有一个定时器的情况。