Spendier Deiner Threadklasse doch einfach ein Event, das sie alle X heruntergeladenen Bytes feuern kann.
Delphi-Quellcode:
type
TDownloadEvent = procedure(Sender: TObject; CurrentSize, TotalSize: int64) of object;
TDeinThread = class(TThread)
private
FDownloadEvent: TDownloadEvent;
procedure DoOnProgress;
...
public
...
property DownloadEvent: TDownloadEvent read FDownloadEvent write FDownloadEvent;
procedure TDeinThread.Execute;
begin
//arbeiten
if (HeruntergeladeneBytes mod 500 = 0) then
Synchronize(DoOnProgress);
...
end;
procedure TDeinThread.DoOnProgress;
begin
if Assigned(FDownloadEvent) then
FDownloadEvent(self, HeruntergeladeneBytes, BytesGesamt);
end;
Den Thread muss Du nun noch Suspended anlegen, damit Du noch die Properties zuweisen kannst, und dann sollte das im Groben funktionieren.