Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlTextReader.ReadElementContentAsBinHex的轻量级替代品?_C#_.net_Memory_Clr_Xmlreader - Fatal编程技术网

C# 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);

我在使用XmlTextReader.ReadElementContentAsBinHex时遇到内存膨胀问题。首先,我要说的是,我不是自愿使用十六进制,而是因为需要与遗留系统进行互操作

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。