C# XmlTextReader.ReadElementContentAsBinHex的轻量级替代品?
我在使用XmlTextReader.ReadElementContentAsBinHex时遇到内存膨胀问题。首先,我要说的是,我不是自愿使用十六进制,而是因为需要与遗留系统进行互操作C# XmlTextReader.ReadElementContentAsBinHex的轻量级替代品?,c#,.net,memory,clr,xmlreader,C#,.net,Memory,Clr,Xmlreader,我在使用XmlTextReader.ReadElementContentAsBinHex时遇到内存膨胀问题。首先,我要说的是,我不是自愿使用十六进制,而是因为需要与遗留系统进行互操作 int read; var buffer = new byte[4096]; while((read = reader.ReadElementContentAsBinHex(buffer, 0, buffer.Length)) > 0) stream.Write(buffer, 0, read);
int read;
var buffer = new byte[4096];
while((read = reader.ReadElementContentAsBinHex(buffer, 0, buffer.Length)) > 0)
stream.Write(buffer, 0, read);
对于大小大于64M左右的元素内容,我得到一个OutOfMemoryException,它似乎与读取器内部StringBuilder中分配的累积有关。不幸的是,我对此无能为力,因为我在一个IXmlSerializable对象中使用它,所以我不得不使用XmlTextReader(它不支持ReadValueChunk之类的东西)。这感觉像是一个.NET错误,但我可能会被它卡住。有人有什么聪明的想法吗?你从哪里看出
XmlTextReader
不支持ReadValueChunk
?公平地说,我在文档中找不到这一点,但如果你尝试一下,你会得到一个NotSupportedException。或者,您可以检查XmlTextReader上的CanReadValueChunk并查看它是否设置为false。您在哪里看到XmlTextReader
不支持ReadValueChunk
?公平地说,我在文档中找不到这一点,但如果您尝试它,您会得到一个NotSupportedException。或者,您可以检查XmlTextReader上的CanReadValueChunk,并查看它是否设置为false。