Delphi TChromium(cef-3)短延迟多页呼叫?

Delphi TChromium(cef-3)短延迟多页呼叫?,delphi,chromium-embedded,tchromium,Delphi,Chromium Embedded,Tchromium,我有下面的代码,我在TWebBrowser项目中使用它来处理对网页的一些快速调用。现在,虽然这可能不是处理此问题的“最佳”方式,但crmBrowser已登录,理论上应该能够连续快速执行5次调用。TChromium是一款速度更快的多线程系统,但它似乎并不倾向于等待 这就是目前困扰我的问题: for I := 0 to Urls.Count-1 do begin FrmDBrowser.crmBrowser.Load('http://www.dragontavern.com' + Urls[I]

我有下面的代码,我在TWebBrowser项目中使用它来处理对网页的一些快速调用。现在,虽然这可能不是处理此问题的“最佳”方式,但crmBrowser已登录,理论上应该能够连续快速执行5次调用。TChromium是一款速度更快的多线程系统,但它似乎并不倾向于等待

这就是目前困扰我的问题:

for I := 0 to Urls.Count-1 do begin
  FrmDBrowser.crmBrowser.Load('http://www.dragontavern.com' + Urls[I]);
  if I < Urls.Count-1 then begin
    Application.ProcessMessages;
    Sleep(FrmDBrowser.Config.CubeDelay);
  end;
end;
基本上,我有一个TStringlist,其中包含需要调用的子链接。但是,当我运行上面的代码时,例如其中有3个链接,。只有最后一个电话得到处理。睡眠也几乎被忽视了

这是TWebBrowser的代码:

for I := 0 to Urls.Count-1 do begin
  webbrowser1.Navigate('http://www.dragontavern.com' + Urls[I]);
  if I < Urls.Count-1 then begin
    Application.ProcessMessages;
    Sleep(FConfig.CubeDelay);
  end;
end;
对于I:=0到URL.Count-1不开始
webbrowser1.导航('http://www.dragontavern.com“+URL[I]);
如果I
正如你所看到的,非常相似。但它是由用户从主线程启动的。我想这将是一个很容易回答的问题,但是,在回调过程中睡眠不会影响主线程,因此要使其工作,我需要同步或向主窗体发送后消息?或者有没有一种更简单的方法让TChromium一个接一个地运行多个URL

如果您想查看完整的源代码并运行项目,请随意浏览:


(我知道Application.ProcessMessages是一个丑陋的东西)

你想实现什么?调用ProcessMessages的目的是什么?好吧,当它还是TWebBrowser时,它的目的是给它时间来处理请求,。但我想,既然它现在是一个线程,它就不再提供任何功能了。这就是睡眠的作用。而带着睡眠等待是很奇怪的。你应该监听已完成的回调事件。我想如果主线程为回调启动了一个新线程,而回调线程正是现在被迫休眠的线程,那么这显然不起作用,所以我推送了一个使用postmessage的commit,试图将事件“返回”到主线程。在这方面也没有运气——所以我将尝试处理每一个事件,因为它将按照您明天的建议完成。啊线程,。爱他们,恨他们,总是一件麻烦事。
for I := 0 to Urls.Count-1 do begin
  webbrowser1.Navigate('http://www.dragontavern.com' + Urls[I]);
  if I < Urls.Count-1 then begin
    Application.ProcessMessages;
    Sleep(FConfig.CubeDelay);
  end;
end;