Einzelnen Beitrag anzeigen

Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#1

Programmieren mit TThread (erster eigener Versuch)

  Alt 30. Sep 2008, 12:41
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.
  Mit Zitat antworten Zitat