Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Programmieren mit TThread (erster eigener Versuch) (https://www.delphipraxis.net/121564-programmieren-mit-tthread-erster-eigener-versuch.html)

sundance 30. Sep 2008 12:41


Programmieren mit TThread (erster eigener Versuch)
 
Hallo DPler,

ich habe jetzt mein erstes (Test-)Progrämmchen fertiggestellt, welches mit Hilfe von BASS und TThreads gleichzeitig zwei Audiodateien (aus einer TStringList) nach MP3 konvertiert. Funktioniert auch soweit. Nur habe ich das Gefühl, dass das Ganze nicht unbedingt optimal konzipiert ist (ich hoffe, der Ablauf wird einigermassen klar...):

Im MainThread:
1. TStringList mit Audiodateien erstellen
2. Liste abarbeiten und pro Datei einen Encoding-Thread starten (max. 2 gleichzeitig)
3. Ein Zähler JobCount zählt die simultan laufenden Encoding-Threads

Im EncodingThread:
1. LAME starten
2. Fortschritt per Windows-Messages übermitteln
3. Nach Ende des Encodings "Finished"-Message senden

Im MainThread:
4. Thread beenden, Dec(JobCount)
5. und weiter bei 2.

Dadurch, dass die Liste nur vom MainThread bearbeitet wird, entfällt Synchronize().

Könnte man das Ganze vielleicht besser machen?
Evtl. den EncodingThread mit FreeOnTerminate starten? Dann wäre es nicht nötig, dessen Ende dem MainThread zu übermitteln; allerdings muß er sich dann ja selbst mit einer neuen Datei aus der TStringList (synchronisiert) "versorgen". Der Vorteil (?) wäre, dass die beiden Threads so lange laufen, bis die Liste leer ist und nicht wie oben für jede Datei neu erzeugt werden.

.sundance.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz