C# 释放StreamReader文件一秒

C# 释放StreamReader文件一秒,c#,streamreader,C#,Streamreader,我有一个streamReader,我用它来监视文件中添加的任何新行, 事情是这样的: while (true) { try { line = sr.ReadLine(); if (line == null) { break; } if (!string.IsNullOrWhiteSpace(line)) { //Do Stuff } Thread.Sleep(2); } } 现在我想偶尔发布一下

我有一个streamReader,我用它来监视文件中添加的任何新行, 事情是这样的:

while (true)
{
  try
  {
    line = sr.ReadLine();
    if (line == null)
    {
      break;
    }
    if (!string.IsNullOrWhiteSpace(line))
    {
      //Do Stuff
    }
    Thread.Sleep(2);
  }
}
现在我想偶尔发布一下文件

我可以关闭sr一两秒钟,然后重新使用它并再次使用它,但我想知道是否有合适的方法来执行此操作。

用于跟踪对文件的更改,然后才打开文件以检查新行

您可以使用最后一个
seek
位置开始新的seek,因此不需要重新读取整个文件

这样做的正确方法是什么

重新打开,将Seek()转到旧位置并继续工作应该是您的最佳选择。如果希望其他方能够继续访问该文件,只需指定适当的名称,例如FileShare.ReadWrite


也许看看.NET 4.0的内存映射文件,使用lastSeenLineNumber会让它变得非常慢;您不能“随机访问”查找行号,这需要重新读取完整文件;这将非常慢(对于多余的读取),并且有可能导致堆碎片,特别是在inputi中不同的行长度的情况下。我已经做到了这一点,我想问题是我忘记了在每次更新文件后关闭sr。。