求助,如何才能在执行一次run2(j)后,暂时10S,再执行run2(j+1).
     当执行完一次start1()后,暂停1分钟,再执行下一次start1();用System.Threading.Thread.Sleep(1000)  的话,主窗口会没响应,有其它办法吗?
如果能加入停止按扭,可以终止执行?谢谢。 private void button17_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                start1();   //循环十次
                MessageBox.Show("i  is " + i);
            }
        }
        private void start1()
        {
            for (int j = 0; j < 10; j++)
            {
                run2(j); 
            }
        }        private void run2(int h)
        {
           MessageBox.Show("h is " + h);
             
        }
    }

解决方案 »

  1.   

    把Sleep放到线程里 private void button17_Click(object sender, EventArgs e)       
     {            
         new System.Threading.Thread(new System.Threading.ThreadStart(delegate
         {
            for (int i = 0; i < 10; i++)           
            {                
                  start1();   //循环十次              
                     MessageBox.Show("i  is " + i);         
            }       
         })).Start();  //多线程
     }    
        
      
      

  2.   


    用多线程的话,是会同时执行的吧?   我只想  完全  执行一次run2(j)后,暂时10S,再执行run2(j+1).
         当 完全  执行完一次start1()后,暂停1分钟,再执行下一次start1();
      

  3.   


    用多线程的话,是会同时执行的吧?   我只想  完全  执行一次run2(j)后,暂时10S,再执行run2(j+1).
         当 完全  执行完一次start1()后,暂停1分钟,再执行下一次start1();
      

  4.   

    这是一个流程控制的问题,在timer控件中做多线程。就是在UI的线程外执行
      

  5.   

    for ()
    {
       ...
       Application.DoEvents();
    }
      

  6.   

    给你分析一下,
    1.你现在写的程序,是跑在UI线程里的(什么是UI线程,就是你程序的主线程,你显示控件的这个线程)
    2.你的程序写在了这个UI线程里,用了一个for循环,然后你想在这个UI停止,又不让界面卡死。
    3.分析2里面的需求,这是做不到的,线程,是最小的运行单元,不可能在代码中停止,却在显示上不卡死的。
    4.所以你这思路就不对了
    5.你需要这样做,启动别的线程,在别的线程里停卡,而不是在UI线程里停止。思路给你了,你自己写吧。