-
22-08-2019 - |
题
给定的方法
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文档本身周围。但是,也许你的代码是不是都这么简单。
不隶属于 StackOverflow