我用多线程控制多个webbrowser 空间实现加载网页模拟点击,在有些网页中需要停留时间,因此我在DocumentCompleted事件中用sleep随机停留了时间,停留网页状态!但是只要一停留窗口就开始卡,没反应,直到几十秒后恢复正常,不知道这个怎么解决?请高手指导!

解决方案 »

  1.   

    用http库实现效率更高。
    比如 httpwebrequest
      

  2.   

    sleep的效果就是如此,如果一定要用这种思路可以换timer试试。
      

  3.   

    你的webbrowser控件在同一个窗体线程上。
    需要多线程构造多个窗体的多个webbrowser才可以。
      

  4.   

    用Sleep当然会卡,因为你的程序在这行代码上已经停止了运行,处于休眠状态
      

  5.   


    Webbroswer 也是在ui线程中,你sleep相当于把ui线程sleep了,当然会卡了
      

  6.   


    虽然不懂 但是楼上这兄弟似乎 说的对 是啊 你sleep啥都sleep包括UI线程
      

  7.   


    具体该怎么做??怎样才能不卡!不sleep  UI线程
    ??
      

  8.   

    可以用Timer定时,也可以用子线程通知。
      

  9.   

    用Timer来控制就可以阻止窗体死的感觉
      

  10.   

    定义:
                Timer timer;
    初始化:
                timer = new Timer();
                timer.Tick += new EventHandler(timer_Tick);
    timer事件:
            void timer_Tick(object sender, EventArgs e)
            {
                //通知继续
                //timer.Stop();
            }
    让timer干活:
                timer.Interval = 1000;
                timer.Start()
      

  11.   

    难道还不够具体嘛...
    说得明白点,lz根本就没有使用多线程,所有wb都是在一个窗体线程中的。
    sleep窗体,当然窗体会卡。
      

  12.   


    嗯,就算多线程,后台线程sleep,也会报异常。webbrowser应该是不能够多线程的,线程速度比那个documentCompleted等事件速度还要快,未等页面元素全部加载完毕,线程已经开始运作了。异常为:指定的转换无效。InvalidCastException