【发布时间】:2014-11-13 20:11:54
【问题描述】:
我正在对读取 CSV 文件的不同方式进行一些基准测试,并发现了一个“奇怪”的问题。问题是当我在控制台应用程序中使用此方法时:
var lines = File.ReadAllLines(fileName); // OutOfMemoryException
foreach (var line in lines)
{
//doing stuff
}
我得到一个 OutOfMemoryException,但是当我在我的 WPF 项目中使用相同的方法时,它工作正常。 我在上面测试的文件是 730MB,我知道不要在更大的 CSV 文件上使用 ReadAllLines,但为什么这种方法在 WPF 应用程序中有效,但在控制台应用程序中无效?
【问题讨论】:
-
你怎么知道它有效?你真的进入了 WPF 应用程序中的 foreach 循环吗?
-
说真的,对于这么大的文件,最好是流式传输而不是一次性处理所有文件
-
我进入了 foreach 循环,我什至可以显示数据网格中的所有行,正如我所说,我知道不要在这么大的文件上使用 ReadAllLines。
-
元评论:我觉得这个问题很难判断。您声称
RealAllLines用于大文件在 WPF 中有效,但在控制台应用程序中无效。除了您的声明外,我们这里没有显示该问题的示例程序(包括生成大型输入文件的程序),即我们无法重现该问题。如果您添加了一个最小的 WPF 应用程序、一个最小的控制台应用程序和一个生成 730 MB 输入文件的小程序,这将导致控制台程序出现问题,您的问题会好得多。
标签: c# csv file.readalllines