C# SoundPlayer不播放任何捆绑的windows声音PCM wav文件

C# SoundPlayer不播放任何捆绑的windows声音PCM wav文件,c#,.net,wav,pcm,soundplayer,C#,.net,Wav,Pcm,Soundplayer,在C#中,我无法使用以下代码从System.Media获取SoundPlayer类以播放我的C:\Windows\Media文件夹中的任何wav。我得到的只是没有声音: String filename = "C:\\Windows\\Media\\tada.wav"; SoundPlayer sp = new SoundPlayer(filename); sp.Load(); sp.Play(); 我用一个名为“Gspot”的程序检查了wave文件“tada.wav”,该程序告诉我音频编解码器

在C#中,我无法使用以下代码从System.Media获取SoundPlayer类以播放我的C:\Windows\Media文件夹中的任何wav。我得到的只是没有声音:

String filename = "C:\\Windows\\Media\\tada.wav";
SoundPlayer sp = new SoundPlayer(filename);
sp.Load();
sp.Play();
我用一个名为“Gspot”的程序检查了wave文件“tada.wav”,该程序告诉我音频编解码器是“PCM audio”。我没有收到任何编译器警告或错误,在运行程序时也没有引发任何异常。我就是听不到任何声音。我的扬声器已打开,可以使用Windows Media Player播放该文件


添加wav作为项目资源没有任何区别。有人能帮我弄清楚为什么我听不到任何声音吗?

您是否在控制台应用程序中将其用作main()方法的主体?应用程序可能正在结束,从而关闭播放音频的线程

我将您的代码复制并粘贴到一个新的“Visual C#Console应用程序”的主程序中。我在文件的顶部添加了“usingsystem.Text;”行,经过编译,逐步完成,它成功了。当我运行它时(没有调试),我没有听到任何声音

如果添加行:

系统线程线程睡眠(2000)

调用Play()后,应用程序将停留足够长的时间来播放音频。

Play()方法将通过单独的线程播放声音。也就是说,控制台应用程序旋转一个新线程来播放声音。这对于Windows应用程序非常有用,因此声音播放不会停止Windows主线程。在控制台应用程序中,当父线程结束时,子线程也将全部消亡。-因此没有声音


有一个PlaySync()方法不会产生新线程,因此将保持console应用程序线程的活动状态,直到它完成播放您的声音。

这就是答案,我添加了睡眠调用,问题得到了解决。非常感谢您解决了这个问题。请更正,这是控制台应用程序中的主体。太棒了!此外,您还需要确保要睡眠的整数参数是音频文件的长度(以毫秒为单位)。2000是2秒,但您可能需要将其更改为更长的音频文件。