ASP.NET+C#应用WAV音频无法持续播放问题求助
解决ASP.NET+C#中WAV音频播放后很快停止的问题
嘿,我一眼就发现问题所在啦!你这段代码里的wave和outputSound都是局部变量,当代码执行完当前方法后,.NET的垃圾回收器(GC)会立刻把它们标记为可回收资源并清理掉——而音频播放正依赖这两个对象的存在,所以才会出现“刚启动就停止”的情况。
具体解决方案:
- 将变量提升为类成员,延长它们的生命周期,避免被GC过早回收:
// 把这两个变量定义为类的私有成员 private NAudio.Wave.AudioFileReader _audioReader; private NAudio.Wave.WaveOut _wavePlayer; public void PlayAudio() { _audioReader = new NAudio.Wave.AudioFileReader("C:/appwin/Audio.WAV"); var offsetProvider = new NAudio.Wave.OffsetSampleProvider(_audioReader); _wavePlayer = new NAudio.Wave.WaveOut(); _wavePlayer.Init(offsetProvider); _wavePlayer.Play(); }
- 记得及时释放资源,避免内存泄漏(比如在页面卸载、类实例销毁时调用):
public void CleanupAudioResources() { _wavePlayer?.Stop(); _wavePlayer?.Dispose(); _audioReader?.Dispose(); }
额外的小建议:
变量名尽量遵循C#的驼峰命名规范(比如把OffsetSampleProvider改成offsetProvider),这样代码的可读性会更好哦~
内容的提问来源于stack exchange,提问作者Fabiano Carvalho
相关产品推荐
相关产品推荐

