com组建模型中,组建是独立于调用者的,一般来说,组件有自己的进程,WebBrowser其实在IE浏览器的进程提供的组建服务,你创建一个WebBrowser对象,只是创建了一个访问IE进程的代理对象而已,不论你new WebBrowser多少次,你访问的都是同一个IE进程,应该你的IE出故障了,重装IE可能就可以解决问题,

解决方案 »

  1.   


    谢谢 stonespace :服务器上是新装的IE8(之前是系统自带的IE6),这个要重装吗?另外,像你说的,我调用IE进程的代理过于频繁,会不会有什么瓶颈?我有至少3个以上的线程同时截图。
      

  2.   

    windows自己都大量引用WebBrowser控件,不要紧的,
      

  3.   

    不要用while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    而是在 webbrowser.documentcommplte事件里面写
      

  4.   

    webbrowser经常内存泄漏,这和javascript垃圾回收机制不完善有关。
      

  5.   


    谢谢 caozhy(一看就是牛人),也谢谢上面的 hdt,zanfeng。那c# 有没有办法操作 webbrowser COM组件的对象?出问题后可以销毁它,重新创建一个对象,它是不是用的对象池?我这几天为了解决这个问题,翻了很多讲COM原理的书。网上下了一个 COM多线程模型、DCOM——潘爱民.pdf,里面一些截图讲得挺明白。如果能控制这个COM组件在内存泄露后销毁,就可以了,毕竟我们改变不了它,是MS的东西。