AGB  ·  Datenschutz  ·  Impressum  







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

Threads und StringList

Ein Thema von IMPEGA · begonnen am 24. Mai 2025 · letzter Beitrag vom 10. Jun 2025
 
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.492 Beiträge
 
Delphi 12 Athens
 
#23

AW: Threads und StringList

  Alt 5. Jun 2025, 08:15
Der Code enthält noch einige Probleme:

"ErgebnisListe"
Wird an zwei Stellen deklariert (gefährlich), aber nur eine Variable wird tatsächlich initialisiert und wieder freigegeben,
ansonsten aber nicht verwendet, also überflüssig.

"CSection2"
Da auf die Stringliste "FErgebnis" niemals von zwei verschiedenen Thread gleichzeitig zugegriffen wird, ist diese Sektion überflüssig.
So wie diese jetzt verwendet wird, kann die auch nicht wirken.
Sinnvoller wäre an dieser Stelle statt der Stringliste den fertigen Protokollstring zurückzugeben ( FOnStatus : TProc<string>; )

"FErgebnis"
Wird noch einmal freigegeben, obwohl das nicht notwendig ist.

"ShouldStop"
Die Variable gehört nicht global deklariert, sondern zu diesem Anwendungsfall "private".
Der Inhalt der Variable wird per Referenz bei Erzeugung der Threads übergeben und dort als Referenz gespeichert.
Der Inhalt wird gleichzeitig durch die einzelnen Threads gelesen, aber auch durch den Hauptthread geändert.
Alle Zugriffe auf den Inhalt der Variablen müssen deshalb abgesichert werden (z.B. mit "CSection1").

"ButtonStartClick"
Bei erneutem Aufruf werden alle Objekte freigegeben.
Es wird aber nicht geprüft, ob eventuell noch Threads existieren, die mit diesen Objekten arbeiten.
Das würde dann vermutlich zum Absturz führen.

"ButtonWeiterClick"
Doppelter Code mit "ButtonStartClick", in eigene Untermethode auslagern.

"FUpdateAktiv"
Das Ereignis gehört eher in OnTerminate, das spart auch das Synchronize.

"FUpdateJobs" und "FUpdateFertig"
Zu einem Ereignis zusammenfassen und dort beide Aufgaben erledigen.

Bei jedem Synchronize wird der Thread angehalten.
Der Anwendungsfall könnte auf TThread.Queue() umgestellt werden.
  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 23:32 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