Hallo,
arbeite mal wieder ein bissl mit Threads. Möchte Downloads von Dateien durchführen. Diese Daten sollen nacheinander geladen werden und nicht parallel. Momentan werden die Threads gleichzeitig gestartet und demnach laufen sie auch parallel. Hier mal mein Code:
(Dies ist ein Auszug aus meiner "Updater-
Unit")
Delphi-Quellcode:
TDownloadUpdate =
class(TThread)
private
fFile:
String;
fUrl:
String;
fParent: HWND;
procedure SetFile(Value:
String);
procedure SetUrl(Value:
String);
public
Done: Boolean;
constructor Create;
protected
procedure Execute;
override;
published
property File2Load:
String read fFile
write SetFile;
property Url:
String read fUrl
write SetUrl;
end;
procedure TDownloadUpdate.Execute;
var
www: TIdHttp;
fs: TFileStream;
begin
inherited;
www:=TIdHttp.Create(
nil);
[
url]www.Port:=81;[/
url]
// Nur testweise, da Apache auf 81 lauscht.
try
try
ForceDirectories(ExtractFilePath(ParamStr(0))+'
\Updates\');
fs:=TFileStream.Create(ExtractFilePath(ParamStr(0))+'
Updates\'+fFile, fmCreate);
www.Get(fUrl, fs);
except
//
end;
finally
[
url]www.free;[/
url]
fs.Free;
end;
end;
procedure TUpdater.DownloadUpdate(i: Integer);
var
du: TDownloadUpdate;
begin
du:=TDownloadUpdate.Create();
with (du)
do
begin
FreeOnTerminate:=True;
SetFile(GetUpdateInfo(i, '
filename'));
SetUrl(GetUpdateInfo(i, '
url'));
Resume;
end;
end;
(hier die Hauptanwendung)
Delphi-Quellcode:
procedure TForm1.StartUp;
begin
Updater:=TUpdater.Create;
Updater.SeekUpdates('http://127.0.0.1/test/updates.ini', Self.Handle);
end;
procedure TForm1.PngBitBtn2Click(Sender: TObject);
begin
Updater.DownloadUpdate(0);
Updater.DownloadUpdate(1);
end;
Vielen Dank im Voraus!