C# 在多线程中调用Timer

来源:互联网 发布:淘宝网上批发市场 编辑:程序博客网 时间:2024/06/06 01:01


   最近在做毕业设计,发现一个有趣的现象,我自己想用timer控件的timer.start(); 方法启动timer,但是却启动不了。经过查找资料,发现timer控件的timer.start();方法不能从非Ui的线程启动。

   后来查找论坛资料,发现以下的解决方案,亲测可行。

    Sytem.Windows.Forms.Timer类的一个实例, 该实例适合于单线程的环境。使用Sytem.Timers.Timer类更加合适, 该类适合多线程的环境。

    

 private void button2_Click(object sender, EventArgs e)  //单击按钮触发的事件    {      Thread t = new Thread(new ThreadStart(work));      t.Start();    }    private void work()    {      System.Timers.Timer timer = new System.Timers.Timer();      timer.Interval = 500;      timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);      timer.Enabled = true;    }    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)    {      Console.WriteLine("Test");    }

0 0