Dein TJob ist ein String, meine Threadlist ist eine Liste von Pointern.... Was kann man da machen? Wir bauen uns eine threadsichere Stringliste.
Delphi-Quellcode:
uses SyncObjs;
Type
TJobList = Class
Private
fList : TStringlist;
fCS : TCriticalSecttion;
Public
Constructor Create;
Destructor Destroy; Override;
Procedure AddJob (aJob : TJob);
Function GetNextJob : TJob;
Function JobsAvailable : Boolean;
End;
Constructor TJobList.Create;
Begin
fCS := TCriticalSection.Create;
fList := TStringlist.Create;
End;
Destructor Destroy;
Begin
fCS.Free;
fList.Free;
inherited;
End;
Procedure TJobList.AddJob (aJob : TJob);
Begin
fCS.Enter;
Try
fList.Add (aJob);
Finally
fCS.Leave;
End
End;
Function TJobList.GetNextJob : TJob;
Begin
fCS.Enter;
Try
Result := fList[0];
fList.Delete (0);
Finally
fCS.Leave;
End
End;
Function TJobList.JobsAvailable : Boolean;
Begin
fCS.Enter;
Try
Result := (fList.Count > 0 );
Finally
fCS.Leave;
End
End;
Wenn Du hier unsicher bist, dann fang doch mit einem Thread erstmal an. Der soll schön im Hintergrund die Jobs nacheinander abarbeiten. Wenn das klappt, dann versuche es mit 2 Threads usw.