Delphi-Quellcode:
procedure TForm1.button_parallelClick(Sender: TObject);
begin
var tasks: TArray<IFuture<String>> := [];
const stopwatch = TStopwatch.StartNew();
for var isbn in ISBNs do
tasks := tasks + [getIsbnJsonAsync(isbn).Start()];
for var task in tasks do
task.Wait();
stopwatch.Stop();
ShowMessageFmt('Ms taken: %d ms', [stopwatch.ElapsedMilliseconds]);
end;
Hallo Günther,
bei wenigen Abfragen funktioniert Dein Code. Da ich aber die Anzahl der Abfragen begrenzen muss, müsste ich die Anzahl der Tasks begrenzen. Wie wäre das möglich?
Ich hatte mir überlegt, den Code zu ändern, um die Tasks erst zu sammeln und im Anschluss zu starten:
Delphi-Quellcode:
for var isbn in ISBNs do
tasks := tasks + [getIsbnJsonAsync(isbn)];
for var task in tasks do
begin
{ Hier könnte ich mittels Integer-Variable prüfen, wie viele Tasks gestartet wurden }
task.Start();
{ Hier müsste ich prüfen, ob aktuell laufende Tasks schon beendet wurden }
end;
Vielleicht wäre es einfacher, das über eine Message laufen zu lassen?
LG Mathias