首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在返回流C#时覆盖流关闭

如何在返回流C#时覆盖流关闭
EN

Stack Overflow用户
提问于 2021-12-09 21:33:06
回答 1查看 151关注 0票数 -1

我希望能够从函数中返回MemoryStream,但我认为在返回stream时,它也会自动关闭。

代码语言:javascript
运行
复制
using (var httpStream = await httpClient.GetStreamAsync(link)) 
{
    using (var stream = new MemoryStream()) 
    {
        await httpStream.CopyToAsync(stream); 
        return stream;    
    }
}

是否有任何方法可以override这个,这样我就可以返回stream以便我可以在其他地方使用它。

下面是我尝试在另一种方法中使用它的方法

代码语言:javascript
运行
复制
using (var fielStream = new FileStream(path, FileMode.Create))
{
    Stream stream = await GetStreamAsync(videoid, type, quality);

    await stream.CopyToAsync(fileStream);  
}
EN

回答 1

Stack Overflow用户

发布于 2021-12-09 21:42:52

下拉内部using:调用者(调用创建的人)应该Dispose流:

代码语言:javascript
运行
复制
using (var httpStream = await httpClient.GetStreamAsync(link)) {
  var stream = new MemoryStream();

  try {
    await httpStream.CopyToAsync(stream); 

    return stream;    
  }
  catch {
    stream.Dispose();

    throw;
  } 
}

应该将using放在下面这样的调用方:

代码语言:javascript
运行
复制
// We create MemoryStream with the code above (GetStreamAsync) 
/ and then Dispose the stream 
using (var stream = await GetStreamAsync(...)) {
  ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70296980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档