public class xx
{
   Thread myThread = null;
   DataTable dt = null;   public xx()
   {
      timer1.Enable = true;
      dt = DbHelperSQL.Query(""); //此处已经为dt正常赋值,并且可用.
   }    private void timer1_Tick(object sender, EventArgs e)
        {
            myThread = new Thread(new ThreadStart(ReadRecord));
            myThread.Start();
        }    private void ReadRecord()
        {
            此方法中要用从Dt中检过数据.
        }

上面的方法中,我如果将ReadRecord()中的事件内容直接写到timer1_Tick(object sender, EventArgs e)事件中(不用线程的话),程序能正常读出我要的数据,只不过我每200毫秒读一次,主程序就显得特别慢,连关闭都好长时间,于是在timer1_Tick(object sender, EventArgs e)事件中又加了一个线程,但线程的定义是在类中,这样执行的结果都不是正确的(不正常),我这样做合理吗?有什么好的意见.谢谢希望大家说说自已的看法,Timer不停的要读事件,并且主程序还可以正常执行,看大家有什么办法?比较着急,上午郁闷了一上午.哪位解决,分全是他的.

解决方案 »

  1.   

    用线程的Timer
    System.Threading.Timer
      

  2.   

    一楼的方法,但是记住读完之后用主线程的SynchronizationContext对象同步,来通知主线程
      

  3.   

    问题已解决,方法是:
    系统启动后直接启动一个线程,在线程中直接用代码写一个Timer对象,并且用+=实现每隔Xx毫秒执行一次.(这样已经测试通过,效果还不错)而不是像我现在的是在timer1_Tick中实现线程,此方面有问题可以给我留言.