我有一个方法接收使用BinaryWriter在其上写入的Stream.但是当我处理这个BinaryWriter时,它也会关闭流.我可以不妥协地把它留下来让我可以打开我的小溪吗?
我在声明中收到"Stream is not readable"的消息:
using (StreamReader sr = new StreamReader(ms))
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这里发布的提示但没有成功.谢谢您的帮助.
这是我的代码:
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Conflict));
//Serialize Conflicts array to memorystream as XML
using (MemoryStream ms = new MemoryStream())
{
using (StreamWriter sw = new StreamWriter(ms))
{
foreach (Conflict ct in Conflicts)
xmlSerializer.Serialize(sw, ct);
sw.Flush(); //Site tip
ms.Position = 0; //Site tip
}
//Retrieve memory stream to string
using (StreamReader sr = new StreamReader(ms))
{
string conflictXml = String.Format(CultureInfo.InvariantCulture, "{0}</NewDataSet>",
Run Code Online (Sandbox Code Playgroud) 正如前面所讨论的,当一个BinaryReader在或的BinaryWriter被关闭,它的底层流中获取关闭以及(AARGH).考虑一下这种情况:一个例程R传递给一个MemoryStream,比如说M; 我想写一些东西M,然后将它传递给另一个例程进行更多处理(不一定写).为方便起见,我想M用BinaryWriter 包装来写我的文章.写完之后,我已经完成了BinaryWriter,但没有完成M.
void R(MemoryStream M)
{
using (B = new BinaryWriter(M))
{
// write some stuff using B
}
S(M); // now pass M to another routine for further processing
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法在不关闭的情况下处理BinaryStream M.
问:有没有办法做以下任何一种情况?