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();
        }

 

 

posted @ 2021-08-28 11:09  Cmale  阅读(445)  评论(0编辑  收藏  举报