C#仅从第二次读取文本OutOfMemoryException

C#仅从第二次读取文本OutOfMemoryException,c#,wpf,file,C#,Wpf,File,所以我有一个大的文本文件,我想读它,然后取一个特定的块(大约30行)。 这个块在我的文本文件中存在很多次,我想取最后一个 这就是我所尝试的: while (true) { Thread.Sleep(30000); string text = File.ReadAllText(@"c:\file.txt"); string table = string.Join("", text

所以我有一个大的
文本
文件,我想读它,然后取一个特定的块(大约30行)。
这个块在我的文本文件中存在很多次,我想取最后一个

这就是我所尝试的:

while (true)
            {
                Thread.Sleep(30000);
                string text = File.ReadAllText(@"c:\file.txt");
                string table = string.Join("", text.Substring(text.LastIndexOf("My Statistics:"))
                    .Split(new[] { '\n' })
                    .Take(24)
                    .Select(i => i.ToString())
                    .ToArray());

                File.WriteAllText(@"last.txt", table);
            }
这个
Text
文件每20秒更改一次,因此我正在使用while循环执行此操作,我需要在新的
Text
文件上写入最后一个块

这里的问题是,在第一次(这很好)之后,我得到了一个错误:
OutOfMemoryException

编辑


我尝试了另一种方法,逐行读取,但结果是一样的。

使用StreamWriter将生成的每一行直接写入文本文件。这样可以避免先将整个长文件存储在内存中

using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\Somewhere\\whatever.txt")) 
    {
        //Generate all the single lines and write them directly into the file
        for (int i = 0; i<=10000;i++)
        {
            sw.WriteLine("This is is : " + i.ToString());
        }
    }
使用(System.IO.StreamWriter sw=new System.IO.StreamWriter(“C:\\Somewhere\\whater.txt”))
{
//生成所有单行并将其直接写入文件

对于(int i=0;我不能从接近工作结束的某个地方开始读取文件?但我不能确定我的块是否在项目>属性>构建选项卡>取消选中“首选32位”复选框。您不喜欢它。或者通过一行一行地读取文件来编写更智能的代码。或者承认文本文件会使数据库变得非常糟糕,并将数据移动到数据库表中。但是我已经有了从中读取的文本文件,那么有什么不同呢?当您调用file.writealtext时会发生OutOfMemory异常y次,尝试使用StreamWriter写出数据