Hallo,
ich habe eine Threadklasse TCapture = class(TThread) geschrieben, die mit MMAudioAPI Funktionen eine wählbare Soundkarte ausliest und die Daten in einem Feld im Thread ablegt. Die Daten und Methoden im Thread sind komplett in TCapture abgekapselt .
Das funktioniert soweit alles gut, so lange ich den Thread nur einmal starte um eine einzige Soundkarte auszulesen.
Wenn ich den Thread aber gleichzeitig zweimal starte um zwei verschiedene Soundkarten auszulesen, kommt viel Datenmüll.
Ich starte die beiden Threads so:
Delphi-Quellcode:
var
Capture: TCapture;
Capture2: TCapture;
...
Capture := TCapture.Create(...);
Capture2 := TCapture.Create(...);
Nach meinem Verständnis habe ich so zwei unabhängige Threads erzeugt, die voneinander nichts wissen.
Ist das korrekt?
Wo liegt mein Denkfehler?
P.S. Ich lese die Daten erst aus, wenn beide Threads angehalten wurden, so, dass Multithreading bedingte Datenzugriffsprobleme wohl auszuschließen sind.