private long count=0;
 private void xx() { count++;  }
       private void button1_Click(object sender, EventArgs e)
        {
            ma = new Thread(new ThreadStart(xx));
            ma.Start();
        }
 //我希望启用一个新的线程,使得xx()能够持续循环执行。
 //但是这里它只执行了一次。
请问:如何启用一个新的线程,使它像一个timer控件一样能按照指定间隔执行某个方法,而不是只执行一次就结束?

解决方案 »

  1.   

    xx方法需要顺序执行吗?如果不需要,循环就可以了
    如果是顺序执行用异步委托或者线程的Join方法
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            {
                for(int i=0;i<100;i++)
               {
                Thread ma = new Thread(new ThreadStart(xx));
                 ma.Start();
                }
            }
      

  3.   


    这个性能开销比较大吧,如果我想执行100W次,那么不是要申请100W次的Thread实例吗??而且这样的话,性能开销也消耗在当前线程的申请过程中,而不是另一个线程的执行过程中了
      

  4.   

    Thread.Sleep(time);
    ma = new Thread(new ThreadStart(xx));
    ma.Start();
      

  5.   

    xx()
    {
      //code
      Thread.Sleep(time); 
      Thread ma = new Thread(new ThreadStart(xx)); 
      ma.Start(); 
    }
      

  6.   

    这样也许可以:
    private long count=0;
    private void xx() { count++;  }//间隔执行的时间
    private Int16 gblTimer = 0;private void yy()
    {
        //死循环
        while(true)
        {
            xx();
            
            if (退出死循环的条件)
            {
                break;
            }        //暂停1秒
            Thread.Sleep(gblTimer);
        }
    }private void button1_Click(object sender, EventArgs e)
    {
        //设定间隔执行的时间,1秒
        gblTimer = 1000;    ma = new Thread(new ThreadStart(yy));
        ma.Start();
    }
      

  7.   


    //这样也许可以
    private void button1_Click(object sender, EventArgs e)
    {
       //全局变量
        i++;    //时间间隔
        Timer = 1000;    ma = new Thread(new ThreadStart(yy));
        ma.Start();
    }
    public void yy()
    {
       if(i != 100W)
       {
          button1(null,null);
       }
    }
      

  8.   

    我如果是timer开始循环
        到时间了: new 一个线程,去干活去
        自己睡个定时长的觉。