由于您的主要问题是更新频率,因此您需要降低它。为此,您可以简单地存储上次更新 HTML 文档的时间,并在下一次数据更改时检查自该时间以来是否经过了一段时间。
这是显示如何执行此操作的代码。以下FUpdatePeriod
示例中的更新周期以毫秒为单位。然后,如果您UpdateChanges
定期调用,innerHTML
(此处的伪代码)将仅在自上次更改后至少经过 1000 毫秒时更新。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MSHTML, OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
private
FLastUpdate: Cardinal;
FUpdatePeriod: Cardinal;
procedure UpdateChanges(const AData: WideString);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FUpdatePeriod := 1000;
end;
procedure TForm1.UpdateChanges(const AData: WideString);
begin
if (GetTickCount - FLastUpdate > FUpdatePeriod) then
begin
(WebBrowser1.Document as IHTMLDocument2).body.innerHTML := AData;
FLastUpdate := GetTickCount;
end;
end;
// now remains to call the UpdateChanges periodically
end.