AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variabel viele Threads erstellen

Ein Thema von Ykcim · begonnen am 1. Jun 2024 · letzter Beitrag vom 4. Jun 2024
 
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#1

Variabel viele Threads erstellen

  Alt 1. Jun 2024, 21:18
Delphi-Version: 12 Athens
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
Patrick
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz