C# 如何在分离的流之间保存值?
我将字节数组加载到对象中,然后将它们连接在一起。问题是,每当using语句退出时,流就会关闭,连接的对象就会失败,因为它的一些资源已经被释放。我一直在尝试将中间的结果保存到一个新流,但这也失败了。这是我的代码:C# 如何在分离的流之间保存值?,c#,memorystream,C#,Memorystream,我将字节数组加载到对象中,然后将它们连接在一起。问题是,每当using语句退出时,流就会关闭,连接的对象就会失败,因为它的一些资源已经被释放。我一直在尝试将中间的结果保存到一个新流,但这也失败了。这是我的代码: public byte[] Merge(IEnumerable<byte[]> docBytes) { Document original = new Document(); using (MemoryStream resultStream = new Me
public byte[] Merge(IEnumerable<byte[]> docBytes)
{
Document original = new Document();
using (MemoryStream resultStream = new MemoryStream())
{
foreach (byte[] docByte in docBytes)
{
using (MemoryStream byteStream = new MemoryStream(docByte))
{
Document doc = new Document(byteStream);
original.Pages.Add(doc.Pages); //I basically want to add all pages from each doc into 1 doc.
original.Save(resultStream); //this fails if docBytes is more than 1
}
}
return resultStream.ToArray();
}
}
如何在创建新流之间保存这些值
文档类的错误。要知道它到底是如何失败的,请发布文档的代码。如果您不想让它失败,请复制您在该类中收到的内容,而不是使用已传递的流。@MartinVerjans类文档可在此处找到:内存仍在消耗中-处理
MemoryStream
不会更快地释放它<代码>内存流中没有任何非托管资源。将它们添加到列表中可能意味着引用的时间更长,是的。因此,我建议首先删除Dispose
。内存行为将是相同的(因为MemoryStream.Dispose
实际上什么都不做)。试一试-它有效吗?是的,似乎有效,谢谢。要知道它到底是如何失败的,请发布文档的代码。如果您不想让它失败,请复制您在该类中收到的内容,而不是使用已传递的流。@MartinVerjans类文档可在此处找到:内存仍在消耗中-处理MemoryStream
不会更快地释放它<代码>内存流中没有任何非托管资源。将它们添加到列表中可能意味着引用的时间更长,是的。因此,我建议首先删除Dispose
。内存行为将是相同的(因为MemoryStream.Dispose
实际上什么都不做)。试一试-它有用吗?是的,似乎有用,谢谢。
[Error] Failed with exception.System.ObjectDisposedException: Cannot access a closed Stream.