C# 如何毫不延迟地同时播放多个wav文件

C# 如何毫不延迟地同时播放多个wav文件,c#,performance,wav,playback,C#,Performance,Wav,Playback,我有一个服务器,它有一些wav文件,当客户端连接时,他可以要求服务器播放每个wav文件,当多个客户端连接时,或者当一个客户端在完成一次之前请求同一个wav文件两次时,我需要并行地再次播放 SoundPlayer不允许这样。我尝试了WindowsMediaPlayer对象,但以以下方式播放时: WindowsMediaPlayer wmp = new WindowsMediaPlayer(); wmp.URL = sounds_folder; 它从一个延迟开始 有人知道怎么做吗?或者在初始化过程

我有一个服务器,它有一些wav文件,当客户端连接时,他可以要求服务器播放每个wav文件,当多个客户端连接时,或者当一个客户端在完成一次之前请求同一个wav文件两次时,我需要并行地再次播放

SoundPlayer不允许这样。我尝试了WindowsMediaPlayer对象,但以以下方式播放时:

WindowsMediaPlayer wmp = new WindowsMediaPlayer();
wmp.URL = sounds_folder;
它从一个延迟开始


有人知道怎么做吗?或者在初始化过程中使用mediaplayer加载缓冲区,以便播放速度更快?

我认为您使用了错误的API。媒体播放器设计用于呈现媒体文件,而非短的直接采样/剪辑

谷歌给我看了

http://www.eggheadcafe.com/articles/20030302.asp

第二种方法甚至假定您预先将整个样本加载到内存中,因此无需担心缓冲时间:

下一步:关于平行音;你应该试试其他的API。您可能幸运地发现它们是异步的,否则任何方法都可以使用线程池

ThreadPool.QueueUserWorkItem 代表,开始祈祷

无法手动创建新线程。。。开始吧。小心线程陷阱不要做任何工作,当然也不要在线程之间共享数据而不锁定,但对于简单的“开火并忘记”背景声音,只要您将带有声音数据的缓冲区保持足够长的时间,这一切都将很简单-即使它们保持静态

尝试wmp.controls.play


这将消除延迟,但不幸的是,对于WindowsMediaPlayer,如果在应用程序初始化时已经创建了WindowsMediaPlayer对象,那么如果您正在创建WindowsMediaPlayer对象,您不需要为要播放的每个声音创建一个新实例吗平行播放?