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.