You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:07:11