本帖最后由 lovecooldog 于 2012-07-18 09:54:20 编辑

解决方案 »

  1.   

    干吗用WebBrowser来解析网页呢。。WebBrowser应该很耗内存吧。。而且还不好释放,为啥不直接用HttpRequest等方式来抓取网页源代码呢?
      

  2.   

    createDomTree()
    里面加Application.DoEvents();
    其它的都去掉。
      

  3.   


    首先感谢你的回复
    你的意思是说去掉cretateDomTree()去掉里面的
    TreeNode treeNode = parserHtmltoTree();//这个遇到信息量大的网站挺费时间
    BeginInvoke(new delegateUpdateTreeView(delegateUpdateTreeViewImpl), treeNode);两行代码,然后添加上Application.DoEvents();但是我这两句代码放在什么位置呢?
      

  4.   


    首先感谢你的回复
    但是后续操作我要用到WebBrowser,不知道有什么好的办法解决!
      

  5.   


    你是说 只在cretateDomTree()方法中加Application.DoEvents();
    其他地方加的都去掉是吧!但是也不行!
      

  6.   

    A first chance exception of type 'System.UnauthorizedAccessException' occurred in (工程名称)*.exe。这个异常已经解决 是跨域的问题!但是其他问题还没有解决,希望得到大家的帮助!
      

  7.   

    没有高手能解决
    那我再问另一个问题
    如何判断webBrowser里页面iframe完全加载完毕
    谷歌、百度我都搜遍啦,所有方法都不行
    如:1、用计数器count=0,通过事件webBrowser_Navigated和webBrowser_DocumentCompleted对count分别自增和自减
        2、在DocumentCompleted事件中判断e.Url和WebBrowser.Document.Url是否一致,如一致则表示初始页面加载完毕
    等方法没有一个能解决问题的,因为每加载完成一次iframe就会触发一次 commpleted,遇到iframe多的就要触发很多次,根本无法判断什么时候最终加载完成!
        希望高手指点!
      

  8.   

    isbackground=true;  试试! 
      

  9.   

    每加载完成一次iframe就会触发一次 commpleted,遇到iframe多的就要触发很多次,1,估计这导致重复解析造成假死。可以在解析时,加一个解析标志。如果解析标志为真,则即使commpleted触发,也不再执行解析。从而避免重复解析。
    2,这样可能的问题就是解析的是首次网页内容,iframe中的内容并没有解析。 可能解析的不是最后的页面。  那么,可以加一个延时。如果commpleted触发后,延长一定时间,再来解析。 因为你的解析并不需要这样急,晚一解析出来,不影响其它的操作。