Hallo,
Du erstellst im Thread ein Objekt, das Audiodaten verarbeitet und dabei ab und zu einen Event feuert. Auf diesen möchtest Du innerhalb des Events reagieren.
Sehe ich das richtig?
Wenn ja, dann stellt sich die Frage, wie das Objekt die Audiodaten verarbeitet. Wenn das synchron abläuft, sollte die Lösung ungefähr so aussehen:
Delphi-Quellcode:
type
TAudioThread = class(TThread)
private
procedure OnBufferFilled(Sender: TObject);
public
procedure Execute; override;
end;
implementation
procedure TAudioThread.Execute;
var
AudioKomponente: TAudioKomponente;
begin
AudioKomponente := TAudioKomponente.Create(nil);
AudioKomponente.OnBufferFilled := OnBufferFilled;
AudioKomponente.Start;
// hier wird periodisch der Event aufgerufen...
AudioKomponente.Stop;
AudioKomponente.Free;
end;
procedure TAudioThread.OnBufferFilled(Sender: TObject);
begin
Tu irgendwas...
end;
Dadurch, dass die Audiokomponente im Thread aufgerufen wird, läuft sie ja schon neben dem Hauptthread, und der Eventhandler wird im Kontext des Threads aufgerufen.
Wenn hingegen die Audiokomponente asynchron läuft, dann hast Du mit einem Thread ein Problem. Aber dann benötigst Du auch keinen.
Gruß
xaromz