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

使用using子句时,是否需手动调用FileStream的DisposeAsync?

手动调用DisposeAsync()在using声明中是否多余?

是的,这里手动执行await createStream.DisposeAsync()完全属于多余操作,甚至可能带来不必要的风险。

关键原因:

  • using声明的自动管理逻辑:C#的using声明(即代码中的using FileStream createStream = File.Create(fileName)写法),会在代码块执行完毕后,自动调用对象的DisposeAsync方法(FileStream实现了IAsyncDisposable接口,符合异步释放的要求),完全不需要手动触发。
  • 重复释放的潜在问题:手动调用DisposeAsync()后,using声明会再次尝试释放同一个流对象。虽然部分.NET内置类能处理重复释放的场景,但这属于不规范的写法,可能引发不可预期的异常,不符合代码最佳实践。

修正后的正确代码:

using FileStream createStream = File.Create(fileName);
// ...write to stream etc..
// 无需手动调用DisposeAsync(),using会自动完成资源释放

内容的提问来源于stack exchange,提问作者me.at.coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:45:40