C#多线程定时器应用
以下代码均为我自己项目中的代码,没有作为公用代码:
#region 线程定时器定义 public delegate void EveDY1(object sender, EventArgs e);//申明委托-电源1 System.Timers.Timer tim_DY1 = new System.Timers.Timer(500);//电源1定时器 #endregion
下面是线程绑定:在Form1的Load事件中即可
#region 线程绑定 tim_DY1.Elapsed += new System.Timers.ElapsedEventHandler(Tick_DY1);#endregion
下面是具体执行的方法:
private void Tick_DY1(object source, System.Timers.ElapsedEventArgs e) { Invoke(new EveDY1(Send_DY1), source, e); }
private void Send_DY1(Object source, EventArgs e)//具体执行的代码 { if (seria_DY1.IsOpen) { string str = dgv1.Rows[test1Count].Cells[0].Value.ToString(); Power_Control(seria_DY1, SW.电源返回当前电压); labDY_V1.Text = return_DY1; if ((str.Equals("恒流恒压充电") || str.Equals("转换效率测试"))) { dgv1.Rows[test1Count].Cells[4].Value = return_DY1; } Power_Control(seria_DY1, SW.电源返回当前电流); labDY_A1.Text = return_DY1; if ((str.Equals("恒流恒压充电") || str.Equals("转换效率测试"))) { dgv1.Rows[test1Count].Cells[5].Value = return_DY1; } } }
以下是启动定时器:此为公用函数,th可以带入不同线程。
private void StartThread(object th)//线程定时器启动 { System.Timers.Timer t = (System.Timers.Timer)th; t.AutoReset = true; t.Enabled = true; t.Start(); }