给定的方法

    public static string[] Foo(System.IO.Stream stream)
    {
        XmlTextWriter xmlWriter = new XmlTextWriter(stream,   System.Text.Encoding.ASCII);

        xmlWriter.WriteStartDocument();
        xmlWriter.WriteStartElement("Element");
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndDocument();
        xmlWriter.Flush();

        return new string[3]{"1", "2", "3"};
    }

和一个调用代码

using(MemoryStream memStream = new MemoryStream())
{
     string[] playerIDs = PlayerCommand.Foo(stream);
     // do some stuff with stream and playerIDs
}

当控制穿出using指令的,有没有的XmlWriter不是在富显式关闭的问题(这将使该流无用)?

此外,在流逝令人讨厌的方法之间的流,还有更好的方式来传递XMLWriting回调用代码(其将压缩它并把它远)?

的结果

在预先感谢 格雷格

有帮助吗?

解决方案

在这里没有问题。一个StreamWriter的Dispose()方法基本上首先调用Flush(),然后部署基础流,所以只要你有Flush()覆盖自己(你上面做的),这是确定要离开它,只要挂的流还活着。

其他答案建议配置的作家本身,但在这里,这不是一个真正的选择,因为它会处理底层流为好。

这是说,如果你只是把数据流中的XML文档,然后在以后使用它,我宁愿通过,而不是跟踪流的XML文档本身周围。但是,也许你的代码是不是都这么简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top