Zitat von
Lefko:
Delphi-Quellcode:
constructor TSoundThread.Create(Pfad :
string);
begin
inherited Create(true);
UniqueString(Pfad);
//Ab hier kommt die AV
SoundPfad := Pfad;
Resume;
//FreeOnTerminate := true;
end;
Es sollte: UniqueString(
SoundPfad) heißen und
nach der Zuweisung stehen.
Zitat von
Lefko:
Delphi-Quellcode:
procedure TSoundThread.Execute;
begin
{ Place thread code here }
sndPlaySound(PChar(SoundPfad), SND_ASYNC or SND_LOOP);
//if terminated then break;
end;
SND_ASYNC sorgt dafür, dass PlaySound() sofort zurückkehrt und der Sound im Hintergrund abgespielt wird (genau das, was Du willst). Dadurch ist der gesamte Aufwand - es in einen eigenen Thread zu packen - überflüssig.