Hallo Zusammen,
ich mit Threads leider noch nicht sicher, daher habe ich eine Frage zur Rückgabe von Ergebnissen.
Ich möchte Abfragen in mehreren Threads ausführen.
Da ich nicht weiß, wieviele Threads benötigt werden, möchte ich diese zur Laufzeit erstellen. Ich habe es wie folgt versucht, aber leider gibt es einen Fehler, wenn ich die Threads erstellen möchte...
Delphi-Quellcode:
{ TMyThread_Actually_wLeistung_Main }
procedure TMyThread_Actually_wLeistung_Main.Execute;
var Logic: TLogic;
RowsWeeks: TRows;
I: integer;
MywLeistungThreads: Array of TMyThread_Actually_wLeistung_MT;
ThreadsCompleted: boolean;
begin
inherited;
Logic:= TLogic.Create;
fWriteSingleResults:= WriteRowsResult;
Try
//KWs und Daten zu KWs errechnen
RowsWeeks:= Logic.GetWeekDates(fVonDate, fBisDate);
//Threads erstellen
for I := 0 to Length(RowsWeeks[0]) -1 do begin
MywLeistungThreads[I].Create(true);
MywLeistungThreads[I].fMaschinenId:= fMaschinenId;
MywLeistungThreads[I].SG_Name:= fSG_Name;
MywLeistungThreads[I].MaschinenId := fMaschinenId;
MywLeistungThreads[I].VonDate := StrToDate(RowsWeeks[1,I]);
MywLeistungThreads[I].BisDate := StrToDate(RowsWeeks[2,I]);
MywLeistungThreads[I].WritewLeistungSingleRows := fWriteSingleResults;
MywLeistungThreads[I].Resume;
end;
//Auf Ergebnisse warten
{MsgWaitForMultipleObjects( }
ThreadsCompleted:= false;
while ThreadsCompleted = false do begin
ThreadsCompleted:= true;
for I := 0 to Length(fRows_wLeistung[0]) -1 do begin
if fRows_wLeistung[1,I] = '' then begin
ThreadsCompleted:= false;
end;
end;
Sleep(500);
end;
Synchronize(procedure
begin
if Assigned(fWritewLeistung_Press) then begin
fWritewLeistung_Press(fSG_Name, fMaschinenID, fCols_wLeistung, fRows_wLeistung);
end;
end);
Finally
Logic.Free;
End;
end;
Die Zeile
MywLeistungThreads[I].Create(true);
löste den Fehler aus und der Meldung nach zu urteilen kann er den Thread nicht erstellen...
Kann mir jemand sagen, was der Fehler ist?
Vielen Dank
Patrick