Vielen lieben Dank für eure Hilfe.
Die Ableitung von TIdSync hatte ich auch gefunden, der Zusammenhang wollte mir aber nicht richtig einleuchten.
Hier noch einmal etwas mehr Code:
Delphi-Quellcode:
type
TMyJSON = record
TotalItems: Integer;
Items: TJSONArray;
ItemsArray: Array of TJSon_Items;
Result: Boolean;
end;
var
MyJSON: TMyJSON;
MyJSONArray: TArray<TMyJSON>;
Dummy_Count: Integer;
Tasks: TList<TTask>;
Sync: TSync;
procedure SearchGoogleSingleISBNTask(const Dummy_String: string);
var
MyJSON: TMyJSON;
begin
MyJSON := SearchGoogleSingleISBN(Dummy_String);
// ...weitere Verarbeitung von MyJSON...
end;
begin
Dummy_Count := ListBox1.Count - 1;
SetLength(MyJSONArray, Dummy_Count);
Sync := TSync.Create;
uses System.SyncObjects; // Add this line
for Dummy_Int := Dummy_Count downto 0 do
begin
while Tasks.Count >= 5 do
Sync.WaitFor;
TTask.Create(
procedure
begin
SearchGoogleSingleISBNTask(ListBox1.Items[Dummy_Int]);
Sync.Signal;
end
).Start;
Tasks.Add(TTask.Last);
end;
// Warten auf Abschluss aller Tasks
while Tasks.Count > 0 do
Sync.WaitFor;
// ...Datenbankaktualisierung...
for Dummy_Int := 0 to Dummy_Count do
begin
MyJSON := MyJSONArray[Dummy_Int];
if MyJSON.TotalItems = 1 then
// ...hier Code zur Datenbankaktualisierung...
end;
end;