在多线程中进行Navigate的问题。(100分)

  • 主题发起人 主题发起人 tomyang
  • 开始时间 开始时间
T

tomyang

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TThreadNavigate.DoNavigate();
var
Doc:ihtmldocument2;
ScrCol:IHTMLElementCollection;
Scr:IHTMLScriptElement;
vFlag:OleVariant;

begin
WebB:=TWebBrowser.create(Tcomponent(Application));

vFlag := navNoReadFromCache;
WebB.Navigate(DLLURL + sUrl,vFlag);

while WebB.Busy do
Application.ProcessMessages ;

Doc:=webb.document as ihtmldocument2;
ScrCol:=Doc.get_scripts;
Scr:=ScrCol.item(0,0) as ihtmlscriptelement;
sBody:=Scr.get_text;
webb.Destroy ;

end;

procedure TThreadNavigate.Execute();
begin
synchronize(DoNavigate);
end;

上面的源码中,为什么在TThreadNavigate有两个instance的时候一个出错,一个正常?
两个instance Navigate的url完全一致。调试发现出错的一个web.busy为false 但是
获得的doc却是nil。
另外 WebB:=TWebBrowser.create(Tcomponent(Application));是否一定要用synchronize
执行,不用可以骂?TWebBrowser.create()的参数除了Tcomponent(Application)还可以用
什么?
 
为什么很多问题我都碰不到?我运行起来一点问题也没有。
 
我也是。刚写完一个多线程的,也没问题啊?
 
tomyang:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
好像用不着多线程,你创建了webbrowser以后,浏览器起来它自己就
是多线程的。
 
多人接受答案了。
 
后退
顶部