为多个定时器传参数

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 类, 再加上参数。

有些博客里写的事件再加一个参数没用, 最终的参数全变成了最后一个,只能用于只有一个定时器的情况。


猜你喜欢

转载自blog.csdn.net/yenange/article/details/80451704