我这个循环语句里面是一组网址,while每循环一组,都要判断网页是否加载完毕,加载完毕后就继续执行下一个。
现在疑惑是,如何while暂停工作,我查了资料说是用,thread.sleep(1000)这样来做,但是实际上while里面添加了这个以后,所有的程序全部都暂停了,而不是暂停了循环的一组,
while()
{
    if(这里检查,网址是否加载完毕,)
    { 如果没有继续等待30秒}//这个等待是如何实现的?    else
    {就继续执行循环}}我初学写winform,第一次接触这样的问题,查了好几天了无果,求教各位高手能给个建议,感激不尽了。

解决方案 »

  1.   

    private void button1_Click(object sender, EventArgs e)
    {
        WebBrowser wb = new WebBrowser();
        List<string> urlNeed = new List<string>() { "http://www.csdn.com", "http://www.qq.com" };
        while (urlNeed.Count>0)
        {
            wb.Navigate(urlNeed[0]);
            int tick = Environment.TickCount;
            while (Environment.TickCount - tick < 30 * 1000 && 
                wb.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
            MessageBox.Show(urlNeed[0]+" visited.");
            urlNeed.RemoveAt(0);
        }
        MessageBox.Show("Web visit finished.");
    }
      

  2.   


    while(){
         while(!loadCompleted()){ //没有加载完
             thread.sleep(1000*30);
         }
    }
      

  3.   

       非常感谢楼上的所有朋友,我是这样写的,但是窗体上的标签并不是一条条显示,而是等待时间以后突然出现没有一条条暂停,这个是怎么回事     public delegate void MyInvoke(string str1);//建立委托
            public void UpdateForm(string str1)//标签显示内容
            {
                label1.Text = label1.Text + str1;
            }
       public void NonParameterRun()
       {
           StreamReader stmRdr = new StreamReader("address.txt");
           string line = stmRdr.ReadLine();
           while (line != null)
           {
               line = stmRdr.ReadLine();
               MyInvoke mi = new MyInvoke(UpdateForm);
               this.BeginInvoke(mi, new Object[] { line });
               Thread.Sleep(500);//让线程暂停 
           }
       } private void Form1_Load(object sender, EventArgs e)
            {            ThreadStart thr_start_func = new ThreadStart(NonParameterRun);
                Thread fThread = new Thread(thr_start_func);
                fThread.Start(); //starting the thread
                NonParameterRun();
    }