Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.818 Beiträge
 
Delphi 12 Athens
 
#4

AW: TTask.Run Problem, der Task läuft nicht flüssig im Hintergrund

  Alt 21. Apr 2020, 11:53
Da im Grunde der komplette Thread/Task sinnlos ist, weil praktisch ALLES im Haupthtread abläuft,
ist der Haupthead somit voll ausgelastet.

Entweder es ist möglich EXCEL und gArt_Liste im Thread zu nutzen,
oder die unzähligen Synchronisierungen fressen nur unnötig viel Zeit/Ressourcen.


Das Einzige, wozu es sowas gut ist: Es verschwendet sinnlos mehr Rechenleistung, um anderen Threads zwischendrin bissl Rechenzeit abzugeben,
und das kann man auch selber machen.



Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
var
  i: integer;
begin
  Memo1.Lines.add('Thread-Beginn ' + TimeToStr(Now));
  try
    for i := 0 to ExcelZeilen -1 do
    begin
      frmArtikelListe.gArt_Liste.Add(i +1,
        EXCEL.ZellenInhalt(i + 1,1), EXCEL.ZellenInhalt(i + 1, 2));
      if i mod 100 = 0 then
        Application.ProcessMessages;
    end;
  except
    Memo1.Lines.add('Fehler ' + TimeToStr(Now));
  end;
  Memo1.Lines.add('Thread-Ende ' + TimeToStr(Now));
  EXCEL.Free;
  ActivityIndicator1.Animate := FALSE;
  GridAusgabe;
end;
Wobei ich ungern unberechenbare "Abtände" haben möchte und daher lieber mit berechenbaren Zeiten arbeite.
Delphi-Quellcode:
    C := GetTickCount;
    for i := 0 to ExcelZeilen -1 do
    begin
      frmArtikelListe.gArt_Liste.Add(i +1,
        EXCEL.ZellenInhalt(i + 1,1), EXCEL.ZellenInhalt(i + 1, 2));
      if (GetTickCount - C) > 100 then begin // siehe unten
        Application.ProcessMessages;
        C := GetTickCount;
      end;
    end;
z.B. mal mit 50, 100, 250 oder 500 Millisekunden ausprobieren, wobei 100 bis 250 oft gut aussehen.


Persönlich würde ich auch empfehlen OnCreate/Constructor nicht unnötig lange laufen zu lassen.
Wie wäre es mit OnShow?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Apr 2020 um 11:56 Uhr)
  Mit Zitat antworten Zitat