vielen dank für deine geduld, ich hab dein beispiel nun wie folgt in
die main-
unit eingebunden, könntest du dir vielleicht kurz anschauen
ob das alles so korrekt ist?
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls, ComCtrls,
Unit2, Dialogs, FastStrings, SyncObjs;
type
TJob =
String;
TJobList =
Class
Private
fList : TStringlist;
fCS : TCriticalSection;
Public
Constructor Create;
Destructor Destroy;
Override;
Procedure AddJob (aJob : TJob);
Function GetNextJob : TJob;
Function JobsAvailable : Boolean;
End;
TMainForm =
class(TForm)
btnStartThreads: TButton;
....
end;
public
{ Public-Deklarationen }
pool: TJobList;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
Constructor TJobList.Create;
Begin
fCS := TCriticalSection.Create;
fList := TStringlist.Create;
End;
Destructor TJobList.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;
procedure TMainForm.btnStartThreadsClick(Sender: TObject);
....
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Pool:= TJobList.Create;
Pool.AddJob('
test');
Pool.AddJob('
test2');
....
im thread rufe ich dann Job:= MainForm.Pool.GetNextJob; auf,
das klappt alles wunderbar, ich hoffe ich habe soweit alles
richtig eingebunden, GANZ großen dank für deine hilfe
mfg