MemoryStream - 无法访问关闭的流

2024-07-04

Hi why using (var sw = new StreamWriter(ms))回报Cannot access a closed Stream exception. Memory Stream位于此代码之上。

using (var ms = new MemoryStream())
{
    using (var sw = new StreamWriter(ms))
    {                 
        sw.WriteLine("data");
        sw.WriteLine("data 2");
        ms.Position = 0;
        using (var sr = new StreamReader(ms))
        {
            Console.WriteLine(sr.ReadToEnd());                        
        }
    } //error here
}

修复它的最佳方法是什么? 谢谢


这是因为StreamReader处理时自动关闭底层流。这using语句会自动执行此操作。

但是,那StreamWriter您正在使用的仍在尝试在流上工作(另外,using作者的声明现在正在尝试处理StreamWriter,然后尝试关闭流)。

解决此问题的最佳方法是:不要使用using并且不要丢弃StreamReader and StreamWriter. See 这个问题 https://stackoverflow.com/questions/1862261/can-you-keep-a-streamreader-from-disposing-the-underlying-stream.

using (var ms = new MemoryStream())
{
    var sw = new StreamWriter(ms);
    var sr = new StreamReader(ms);

    sw.WriteLine("data");
    sw.WriteLine("data 2");
    ms.Position = 0;

    Console.WriteLine(sr.ReadToEnd());                        
}

如果你感觉不好sw and sr被垃圾收集而不在代码中被丢弃(按照建议),你可以这样做:

StreamWriter sw = null;
StreamReader sr = null;

try
{
    using (var ms = new MemoryStream())
    {
        sw = new StreamWriter(ms);
        sr = new StreamReader(ms);

        sw.WriteLine("data");
        sw.WriteLine("data 2");
        ms.Position = 0;

        Console.WriteLine(sr.ReadToEnd());                        
    }
}
finally
{
    if (sw != null) sw.Dispose();
    if (sr != null) sr.Dispose();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MemoryStream - 无法访问关闭的流 的相关文章

随机推荐

  • 使用二阶二次曲线平滑小数据集

    我正在做一些特定的信号分析 我需要一种方法来平滑给定的钟形分布曲线 运行平均方法不会产生我想要的结果 我想保持拟合曲线的最小 最大和总体形状完整 但解决采样中的不一致问题 简而言之 如果给定一组模拟简单二次曲线的数据 您会推荐哪种统计平滑方
  • ASP 文本框调用 javascript 函数

    我在 asp 中有一个搜索文本框 我希望它在每次文本更改时向服务器发送请求 我有一个 javascript 函数 它发送请求 但每次我在文本框中输入内容时 它都不会被调用 如何从 ASP 文本框调用 javascript 函数 那是我的文本
  • 将 Haskell GHCi 输出重定向到文本文件 [重复]

    这个问题在这里已经有答案了 可能的重复 将 Haskell GHCi 命令结果输出到 txt 文件 https stackoverflow com questions 14595934 outputting haskell ghci com
  • SQL Server 更改数据捕获 - 捕获进行更改的用户

    关于SQL Server 更改数据捕获 https msdn microsoft com en us library bb933994 v sql 120 aspx 你能追踪到User谁对行 列数据进行了更改 或者是否有办法扩展 CDC 以
  • 如何处理单个 Activity 的多个 Fragment

    我最近开始考虑为我的 Android 设备开发应用程序 我产生这种兴趣的原因是我在玩几个arduinos时想到了一个好主意 让它们与我的手机进行通信 就像我在arduino本身上测量的任何值的接口一样 现在 我可以采取简单的方法并使用公共资
  • 有什么理由不对函数使用 INLINABLE pragma 吗?

    The 文档 http www haskell org ghc docs latest html users guide pragmas html states 函数 f 上的 INLINABLE f 编译指示具有以下行为 INLINE 表
  • 从 R 中的 CSV 文件读取“...”中定义的函数输入值

    假设我有一个 R 函数 例如foo以下 该函数有 4 个固定参数 以及定义在中的任意数量的任意参数 所有输入值foo参数存储在THIS https github com izeh i blob master j csvCSV 文件 在下面的
  • Swing JEditorPane CSS 功能

    我正在 Swing JEditorPane 中显示 HTML 内容 为了更改 HTML 的默认外观 我使用了 CSS 样式表 这很好用 我的问题只是 JEditorPane 不支持完整的 CSS 规范 是否有 JEditorPane 支持的
  • 获取 Pandas 的平均年份(多年的平均天数)

    我是 Pandas 时间序列和数据帧的新手 很难完成这个简单的任务 我有一个从 2004 年 1 月 1 日到 2008 年 12 月 31 日的每一天的数据集 data 一维 float32 Numpy 数组 日期存储为日期时间对象 日期
  • 从 Open Graph 中排除图像

    tl dr我想在我的 og image 标签中默认指定无图像 我一直像个疯子一样在谷歌上搜索来解决这个问题 但我发现的所有问题都是来自那些无法让他们的图像出现而不是出现的人提出的问题预防他们的图像不再出现 所以 这就是交易 在我的个人网站
  • 将 vscode(Visual Studio Code)语言服务器移植到 Visual Studio 扩展

    我想为 Visual Studio 2022 带扩展 添加 ansible DSL 基于 yaml 支持 我在中找到了 ansible DSL 的语言服务器视觉工作室代码 https github com ansible ansible l
  • 使用 Cookie 记住我时的安全性

    我已经在 PHP 中实现了一个登录类 并且想要创建一个记住账号键入功能 这样用户就不必每次访问都登录 我对此进行了一些研究 并准备使用 PHP setcookie 编写它 但后来遇到了这个页面 如何使用 jquery 创建 记住我 并存储
  • iOS 9 中的触觉

    您可以在 iPhone 6s 上使用 iOS 9 中的 Taptic 引擎吗 WatchOS2 和 OS X 能够使用触觉引擎 所以我认为 iOS 9 中也会有 但我找不到任何 API 是的 我对内部进行了逆向工程UIKit我发现了另一种
  • 如何知道活动何时安排?

    我有一个地图视图 我想在其上放置一些标记 当我开始活动时 我将从网络服务中检索这些数据 因此我需要知道当前视口的最小和最大纬度 经度对 我正在打电话 mMapView getWidth mMapView getHeight 但当活动开始时它
  • 使用 pip 进行搜索是如何工作的?

    是的 我对这个问题非常认真 使用 pip 进行搜索是如何工作的 关键字的文档search指的是 pip 搜索参考 https pip pypa io en stable user guide searching for packages这只
  • 在 Bootstrap DateTimePicker 中将 minDate 设置为今天

    我正在使用 Bootstrap 日期时间选择器 http eonasdan github io bootstrap datetimepicker http eonasdan github io bootstrap datetimepicke
  • “缺少方法”的模型在 Rails 4 中的行为与 Rails 3 中的行为不同(可能导致“堆栈级别太深”错误)

    我有一个 Rails 应用程序 可以在 Rails 3 2 14 上正常运行 我刚刚开始将其升级到 Rails 4 基本上遵循铁路广播第415集 http railscasts com episodes 415 upgrading to r
  • 如何在堆栈上创建按值迭代器?

    我可以在堆中创建一个消耗迭代器 vec 1 10 100 into iter 我还可以在堆栈上创建一个借用元素的迭代器 1 10 100 iter 但如果我这样写 1 10 100 into iter 这不是一个消耗迭代器 因为 T int
  • SwipeListView 使用 NullPointerException

    我正在尝试使用SwipeListView 但是当我触摸应用程序上的某个项目时 它会崩溃 日志信息就在那里 05 26 21 52 26 545 E AndroidRuntime 19862 java lang NullPointerExce
  • MemoryStream - 无法访问关闭的流

    Hi why using var sw new StreamWriter ms 回报Cannot access a closed Stream exception Memory Stream位于此代码之上 using var ms new