System.Timers.Timer传参问题

转自:http://bbs.csdn.net/topics/390889626
问:System.Timers.Timer怎么给刷新函数传递多个参数?不使用全局变量
解决:如果方便传递参数,可以自己继承timer,写一个自己的timer类即可
例:
 class MyTimer : System.Timers.Timer
        {
            int num;
            public int GetNum()
            {
                return num;
            }
            public void SetNum(int value)
            {
                num = value;
            }
        }
        void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            MyTimer t = (MyTimer)sender;
            t.Enabled = false;
            t.Close();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
            //var y = Assembly.Load(id);
            for (int i = 1; i <= 3; i++)
            {
                MyTimer taskTime = new MyTimer();
                //我这里想把i传到taskTime_Elapsed里  然后方法里使用!因为是多个,全局参数不能用
                taskTime.Interval = i * 1000;
                taskTime.SetNum(i);
                taskTime.Enabled = true;
                taskTime.AutoReset = true;
 
                taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
            }
        }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
System.Timers.Timer和DispatcherTimer都是用于定时执行任务的计时器类,但它们在使用方式和适用场景上有所不同。 System.Timers.Timer是一个多线程计时器,适用于在后台线程执行周期性任务。它是基于底层的System.Threading.Timer实现的,可以在指定的时间间隔内重复执行任务。以下是一个使用System.Timers.Timer的示例: ```csharp static System.Timers.Timer Timer1 = new System.Timers.Timer(); static void Main() { Timer1.Interval = 1000; // 设置时间间隔为1秒 Timer1.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler); // 绑定事件处理程序 Timer1.Start(); // 启动计时器 } static void PeriodicTaskHandler(object sender, ElapsedEventArgs e) { // 执行周期性任务的代码 } ``` DispatcherTimer是一个UI线程计时器,适用于在UI线程上执行周期性任务。它是基于WPF的Dispatcher对象实现的,可以在指定的时间间隔内重复执行任务,并且可以直接更新UI元素。以下是一个使用DispatcherTimer的示例: ```csharp private void StartTimer() { DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += OnTimerHandler; // 绑定事件处理程序 dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 100); // 设置时间间隔为100毫秒 dispatcherTimer.Start(); // 启动计时器 } private void OnTimerHandler(object sender, EventArgs e) { string strTime = DateTime.Now.ToString("HH:mm:ss:fff"); // 获取当前时间 lbTime.Content = strTime; // 更新UI元素 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值