将大型字符串文件读取到DataSet时如何修复System.OutOfMemoryException?

时间:2019-06-21 03:13:02

标签: c#

以下方法读取包含XML格式数据的字符串变量的值,并将其分配给数据集。该功能已经运行了好几年,但是最近正在检索的基础数据有所增长。现在,我间歇性地看到以下行中引发了“内存不足异常”:

“ StringReader sr =新的StringReader(Regex.Replace(XMLText,pattern,” $ 1“)));”

我看过其他解决方案,例如下面的两个链接,人们建议使用File.ReadLines或StreamReader。但是我不确定如何将其与dataSet.ReadXml函数配合使用。

https://social.msdn.microsoft.com/Forums/en-US/e6ed3216-5cad-463c-b4c0-5a745b0e6b4e/out-of-memory-exception-while-reading-large-text-file?forum=Vsexpressvcs

Read Big TXT File, Out of Memory Exception

    DataSet ds = new DataSet();
    string pattern = @"(</?)(\w+:)";

    //[XMLText] is a string variable containing XML downloaded from a WebServices API.
    StringReader sr = new StringReader(Regex.Replace(XMLText, pattern, "$1"));                                           
    ds.ReadXml(sr);
    return ds;

我只能通过关闭然后重新打开应用程序来解决它。有没有一种方法可以优化此代码以防止出现此异常?预先非常感谢。

0 个答案:

没有答案