我正在使用此代码从资源中播放 WAV 文件,并且音频播放正确,但是在播放后(大约 1/2 秒)我得到了短暂的静态爆炸:
//System.Media.SystemSounds.Beep.Play();
SoundPlayer sndPlayer = new SoundPlayer();
sndPlayer.Stream = Resources.Notify;
sndPlayer.Play();
如果我取消注释System.Media.SystemSounds.Beep.Play()
上面的行,那么来自我的资源的哔声和通知声音都可以正确播放,并且没有静态。我已经尝试了上述代码的一些不同变体,并且总是得到静态的。我尝试将所有变量设为静态,以防与早期垃圾收集有关,但这并没有帮助。
WAV 文件只是我从c:\WINDOWS\Media\ding.wav
(在 Windows XP 上)复制的一个文件,它在 Windows Media Player 中播放良好。另外,如果我使用 new SoundPlayer("c:\WINDOWS\Media\ding.wav")
,它会从文件中正确播放。
我想这与那个UnmanagedMemoryStream
有关Resources.Notify
,也许我需要先将它加载到托管流中?我知道如果我不使用new Bitmap(Resource.MyPNG)
并尝试Resource.MyPNG
直接使用 PNG 文件,我会遇到问题,所以可能与 WAV 资源类似?
更新:我最初以为每次播放声音时都会发生这种情况,但现在看来它只发生在我第一次在我的应用程序中播放声音时。所以也许需要做一些初始化?
我也试过这个,同样的问题:
SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play();