你的播放我不知道有没有什么特殊要求。
我试了一下同步播放,创建多个线程,不会产生资源占用很大的问题,
只是它相当于会在调用 PlaySound 的时候阻塞线程。
unit Unit2;
interface
uses
MMSystem, Classes, SysUtils;
type
TSounder = class(TThread)
private
FSoundFile: string;
protected
procedure Execute;
override;
public
constructor Create(ASoundFile: String);
overload;
property SoundFile: string read FSoundFile write FSoundFile;
end;
implementation
{ TSounder }
constructor TSounder.Create(ASoundFile: String);
begin
Inherited Create(true);
FreeOnTerminate := true;
FSoundFile := ASoundFile;
if FileExists(FSoundFile) then
Resume;
end;
procedure TSounder.Execute;
begin
PlaySound(PChar(FSoundFile), 0, SND_SYNC);
end;
end.
上面的是播放声音的线程。
procedure TForm1.Button1Click(Sender: TObject);
begin
TSounder.Create('C:/WINNT/Media/The Microsoft Sound.wav');
TSounder.Create('C:/WINNT/Media/Windows 登录音.wav');
TSounder.Create('C:/WINNT/Media/Windows 退出时奏幻想空间.WAV');
TSounder.Create('C:/WINNT/Media/巴赫的《勃兰登堡协奏曲》.RMI');
TSounder.Create('C:/WINNT/Media/The Microsoft Sound.wav');
TSounder.Create('C:/WINNT/Media/Windows 登录音.wav');
TSounder.Create('C:/WINNT/Media/The Microsoft Sound.wav');
TSounder.Create('C:/WINNT/Media/Windows 登录音.wav');
end;
上面的代码是我随便创建了几个线程,效果是声音一个接一个播放,
不会出现资源异常增加的问题。