【问题标题】:data is not saving properly in memory stream C#数据未正确保存在内存流 C# 中
【发布时间】:2012-07-26 22:31:40
【问题描述】:

我正在使用 HtmlAgilityPack 并在 MemoryStream 中保存一个 html 文档:

       MemoryStream ms = new MemoryStream();
       HtmlDocument doc = new HtmlDocument();
       doc.load(path);
       . 
       .
       doc.Save(ms);

现在的问题是,有时文档完全保存,有时文档的某些内容(从结尾)丢失,它没有与文档一起保存。谁能告诉我为什么会这样,我该如何解决?

【问题讨论】:

  • 请发布一个简短但完整的程序来演示问题。

标签: c# file-io html-agility-pack


【解决方案1】:

保存后尝试添加

memoryStream.Seek(0, System.IO.SeekOrigin.Begin)

【讨论】:

    【解决方案2】:

    使用流(或任何实现 IDisposible 的东西)时,请确保有效地管理内存。 .Net 垃圾收集可以随时启动,结果可能无法预测。

    这有时就像将变量包装在 using() 语句中一样简单:

            using(var ms = new MemoryStream()) {
                var doc = new HtmlDocument();
                doc.Load(path);
                doc.Save(ms);
            }
    

    【讨论】:

    • GC 可以随时启动;但结果不会影响发布的代码。 GC 只收集不再使用的对象。最早直到调用保存之后才会收集“ms” - 这不会导致像 OP 描述的任何问题。
    • 你是对的 - 我想我只是抓着稻草:)
    猜你喜欢
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2021-10-15
    • 2021-11-23
    相关资源
    最近更新 更多