WebBrowser 跨线程操作中的一些问题

来源:互联网 发布:365自考网络 编辑:程序博客网 时间:2024/05/21 22:36

WebBrowser 必须是单线程的, 如果我在另一个线程调用invoke, 那么这个invoke将返回错误.妥协的办法是通过发送消息(SendMessage)来变相实现跨线程控制.  

         但是其中有一个问题,必须要解决, 因为跨线程,所以计数问题必须要考虑. 对于invoke对象的 IDispatch 指针,必须增加计数,同时,对于DISPPARAMS中的 IDispatch 对象同样要增加计数.   否则有可能在SendMessage时,对象已然被WebBrowser销毁( JScript.dll 控制js ), 使程序崩溃.