解决方案 »

  1.   

    你的aaa()里每个循环等到100毫秒
    循环1000次要100秒
    而你的Timer每3秒执行一次aaa,不冲突才怪
      

  2.   

    timer里边不会等aaa()结束之后才开始计时吗?  这样写的话是不会等aaa()结束的???
      

  3.   

    我是做web的 很少搞线程
    但看了你的问题猜测如下
    为什么要在Tick里面创建多一个线程出来呢
    在tick里面调用aaa就可以了~
    或者tick+=aaa;自己每行代码写写注释~ 你就会发现你的思路了~
    如何对类或方法不熟悉查查资料 再把资料也写到注释中去
      

  4.   

    timer里边不会等aaa()结束之后才开始计时吗?  这样写的话是不会等aaa()结束的???
    你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
      

  5.   

    timer里边不会等aaa()结束之后才开始计时吗?  这样写的话是不会等aaa()结束的???
    你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
    里面不使用线程UI会卡死啊.. 我不想它卡死.....所以..   不是就一个线程吗?怎么会是多线程呢? 给小弟解释一下.除了tr,还有哪个是?
      

  6.   

      timercursor.Interval = 3000;//shi  fenzhong
                timercursor.Enabled = true;
                timercursor.Tick += (sender1, e1) =>
                {
                    tr = new Thread(aaa);
                    tr.Start();
                };你这样写就是每3秒开一个线程然后 每个线程都从1-1000; 当你第一个线程执行到一定时间时第二个线程开起来了。
    他又从1开时 第三个线程开起来又从1开孡,就会出来你看到的乱了 。
      

  7.   

    timer里边不会等aaa()结束之后才开始计时吗?  这样写的话是不会等aaa()结束的???
    你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
    里面不使用线程UI会卡死啊.. 我不想它卡死.....所以..   不是就一个线程吗?怎么会是多线程呢? 给小弟解释一下.除了tr,还有哪个是?
    不用Timer,直接用Thread,Thread里用while(true),里面放aaa代码,循环一次sleep(3000)
      

  8.   

    通常在你的 Tick 的处理方法中,第一句话就要写上:   timercursor.Stop()
      

  9.   

    方法有效 改过之后的代码为
    timercursor.Tick += (sender1, e1) =>
                {
                    timercursor.Stop();
                    tr = new Thread(aaa);
                    tr.Start();
                    timercursor.Start();
                }; 为什么timercursor.Start();要放到里边来才可以..
      

  10.   

    方法有效 改过之后的代码为
    timercursor.Tick += (sender1, e1) =>
                {
                    timercursor.Stop();
                    tr = new Thread(aaa);
                    tr.Start();
                    timercursor.Start();
                }; 为什么timercursor.Start();要放到里边来才可以..不对 还是不行 放到里边来还是跟原来一样的问题.  主要是我在aaa()方法里已经join()了啊 ,不是会等待执行完之后才会继续执行吗.
      

  11.   

    在tr.start()后面加tr.Join();不行吗? join不是会等待执行完毕之后才会执行下一步吗
      

  12.   


             timercursor.Tick += (sender1, e1) =>
                {
                    timercursor.Stop();
                    tr = new Thread(aaa);
                    tr.Start();
                };        public void aaa()
            {
               //......
                tr = null;
                timercursor.Start();
            }
      

  13.   

    timer里边不会等aaa()结束之后才开始计时吗?  这样写的话是不会等aaa()结束的???
    你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
    用sleep是可以实现的.,已经做过了,当初想到要有个计时器 所以还是用timer了  还是多谢哥们!
      

  14.   

    朋友- -  你这样写是找不到timercursor变量的  难道你要把它弄成全局变量吗
      

  15.   

    timercursor.Interval = 3000;  你确定是 10 分钟?
      

  16.   

    问题很简单,你的 aaa 方法里面的 for 循环,每循环一次需要停顿 100 ms,循环 1000 次,需要停顿 100 s,你的 timer.Interval 是 3000 ms,即 3 s,你的 第一次触发 aaa 的东西还没做完,第二次、第三次、......、第 N 次 触发就已经来了,怎么会不乱呢?换句话说,当你第一次触发 aaa 的时候,有可能在执行到 label.Text  = 10% 的时候,第二次 timer 触发了,然后 label.Text 就被冲掉了。
      

  17.   

            public void aaa()
            {
    timercursor.Stop();
                for (int i = 0; i < 1000; i++)
                {
                    this.Invoke(new Action<int>((total) =>
                   {
                       this.label1.Text = (i + 1).ToString() + "/" + total; 
                       //this.progressBar1.Maximum = total;
                       //this.progressBar1.Value = Convert.ToInt32(i+1);
                   }), 1000);
                    Thread.Sleep(100);
                }
                this.Invoke(new Action(() =>
                {
                    textBox1.Text += "结束" + "\r\n";
                }));
                tr = null;
    timercursor.Start();
            }
      

  18.   

    不明白 为什么一定要加一个 timer,直接开个新线程不久行了
      

  19.   

    timer定时器的执行函数就是一个独立线程,要么用timer,要么用线程(里面sleep定时),都不影响UI的,
    您现在的做法是定时创建线程,很多线程同时工作,同时控制控件text
      

  20.   


    每3秒都new出了一个线程,最后很多线程在工作
      

  21.   

    如果只想开启一次的话,在aaa里面循环开始前timercursor.stop();啊