WAV播放后C#SoundPlayer静态

WAV播放后C#SoundPlayer静态,c#,.net,audio,wav,soundplayer,C#,.net,Audio,Wav,Soundplayer,我正在使用此代码播放资源中的WAV文件,音频播放正确,但播放后会出现短暂的静电(大约1/2秒): 如果我取消注释上面的System.Media.SystemSounds.Beep.Play()行,则我的资源中的嘟嘟声和Notify声都会正确播放,不会出现静态。我尝试了上述代码的一些不同变体,并且总是得到静态的结果。我尝试将所有变量都设置为静态,以防与早期垃圾收集有关,但这没有帮助 WAV文件只是我从c:\WINDOWS\Media\ding.WAV(在WINDOWS XP上)复制的文件,它在WI

我正在使用此代码播放资源中的WAV文件,音频播放正确,但播放后会出现短暂的静电(大约1/2秒):

如果我取消注释上面的
System.Media.SystemSounds.Beep.Play()
行,则我的资源中的嘟嘟声和Notify声都会正确播放,不会出现静态。我尝试了上述代码的一些不同变体,并且总是得到静态的结果。我尝试将所有变量都设置为静态,以防与早期垃圾收集有关,但这没有帮助

WAV文件只是我从
c:\WINDOWS\Media\ding.WAV
(在WINDOWS XP上)复制的文件,它在WINDOWS Media Player中可以正常播放。另外,如果我使用新的
声音播放器(“c:\WINDOWS\Media\ding.wav”)
,它可以从文件中正确播放

我想它与
非托管内存流
有关,而
Resources.Notify
是,也许我需要先将其加载到托管流中?我知道如果我不使用
new Bitmap(Resource.MyPNG)
并尝试直接使用
Resource.MyPNG
的话,我会遇到PNG文件的问题,所以可能与WAV资源类似

更新:我原本以为每次播放声音时都会发生这种情况,但现在看来,这种情况只发生在我第一次在应用程序中播放声音时。所以可能需要进行一些初始化

我也试过同样的问题:

SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play(); 

这是MS使用My.Audio.Play()的内部实现,请参见它们如何实例化SoundPlayer类,它们利用重载构造函数获取文件路径或流


你能在实例化SoundPlayer时尝试传入流吗?

只是一台电脑上的一个问题。从来没有解决过这个问题,其他应用程序似乎也没有这个问题,但如果到目前为止只在一台电脑上(可能测试了15台)就不值得我花时间了。如果我得到了一个更好的答案,我将报告一个更好的答案。

我确实尝试过这个,我将编辑我的帖子以显示我尝试过的方法。你能快速测试另一台电脑上是否出现相同的问题吗?排除声卡…有趣的是,你问我,我现在在家,我的家用电脑上没有发生这种情况。我怀疑这可能是电脑的问题,甚至可能与在VS调试器下运行有关。明天我将在几台电脑上进行测试,如果其中一台电脑出现问题,我想这可能不是问题。奇怪的是,它在文件中播放得很好(将文件名传递给SoundPlayer),但有时bug就是这样工作的。
SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play(); 
public void Play(string location, AudioPlayMode playMode)
{
    this.ValidateAudioPlayModeEnum(playMode, "playMode");
    SoundPlayer sound = new SoundPlayer(this.ValidateFilename(location));
    this.Play(sound, playMode);
}