本帖最后由 xinxin1982 于 2010-07-21 05:42:59 编辑

解决方案 »

  1.   

    好乱啊。看的不是很明白。但是多县城不能同事操作UI界面。
    这个是时刻要明确的。
    不能让后台线程去更新UI界面上的东西,需要更新可以采用跨线程推送。  MSDN上有们的例子,非常简单。看一下就可以了。如果你要用WB去显示多个页面,WB内部本身是多线程的,但是它里边已经有了处理,你不用关心。
    其实你指定WB去加载页面后,加载动作就是后台的,你不用启动那么多线程啦。
    你只要挨个启动就可以WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
    WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
    WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
    WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
    WB1.Navigate(....);
    WB2.Navigate(....);
    WB3.Navigate(....);
    WB4.Navigate(....);
    在  WB_OK方法中处理你的完成事物。
    其实完成事件你可以用多个方法分别处理。 但是从编程风格上建议用同一个方法 然后通过SENDER参数获取具体的完成对象。
      

  2.   

    还有一个问题  WB毕竟不是完整的IE  有些复杂的脚本操作难免会出现脚本报错的情况  多个WB容易吧程序卡死。 所以最好是获取一下 DOMdocument然后向页面注入一段JS脚本代码,去替换和屏蔽可能报错造成停止的脚本。
    常见的是重写 屏蔽alert 等方法。 如果页面还有特殊脚本 要研究一下,重写 替换掉。
      

  3.   

    completed事件 在一个页面上可能被触发多次, 由于页面可能采用框架或者异步的东西。 所以对completed的判断和检查也是必要的。
      

  4.   

    注释掉的是方法2,我想通过结束事件来获取结束了,可是不行,一直没有引发“webBrowser1_查询网站你有给webbrowser挂接事件吗?
    webBrowser1_查询网站1_DocumentCompleted+=webBrowser1_查询网站1_DocumentCompleted
      

  5.   

    楼上的大大,偶正在看你前面发的英文代码部分....还没找到重点的..英文不好,正在慢慢啃...我挂事件了,我是从控件栏拖动出来的,然后双击后,加入了事件的,
    如果去掉while (complete_state[0] < 1)这里的判断条件,换做方法1,过一会,"查询网站1_DocumentCompleted"会执行,正常反应
    但就是加上这个条件,<1的情况,然后把后面要运行的东西放到while当中去...程序都会假死...然后一直没有反应,,我有监视complete_state[0]的值,一直是0......"查询网站1_DocumentCompleted"就没有执行...是不是我暂停程序的方式不太对?
      

  6.   

    To 10楼   动态生成控件也没有问题的 只要你的思路清晰,流程明确 先生成对象控件,添加到对象集合里
    然后指定动作。   总是善于使用事件  对后台线程与界面UI进行分离。
      

  7.   

    呵呵,需要决定需求的,先不说这个哈,你给我说的
    WB1.Navigate(....);
    WB2.Navigate(....);
    WB3.Navigate(....);
    WB4.Navigate(....);这个耗费的时间还是累加的,测试6个学生成绩信息网页时42秒,
    我会出错的那个,运气好,最后一个才出错,花的时间一般是3-5秒,这样,
      

  8.   

    我一直在弄 webbrowser多线程 你到底问什么问题?
    像是多线程死锁问题
      

  9.   

    .net4.0中ThreadState消失了一些属性...郁闷了..my.threadstate!=Threadstate.Stopped
    这个判断不能用了...没有stopped属性了...咋办咧....
      

  10.   

    4.0的线程结束就释放了 没有STOPED了需要的话 你可以自己设一个变量  线程最后更改它就是了
      

  11.   

    偶qq你也知道呢嘛,加qq,我直接开贴再给你分就是了哈,这都是小问题的嘛~表生气哦~
      

  12.   

    楼主的问题怎么解决的呢?楼主遇到的权限问题是AccessViolationException吗,我也遇到了同样的问题,求指导~