C# Visual Studio 2012在读取文件时崩溃

C# Visual Studio 2012在读取文件时崩溃,c#,visual-studio,visual-studio-2012,C#,Visual Studio,Visual Studio 2012,我知道这场崩溃以前在某些情况下已经解决了,但在你称之为重复之前,请阅读以下内容: 我已尝试重新安装VS2012框架 我已尝试删除可能导致此崩溃的注册表值 我已尝试重新安装VS2012 我已尝试禁用IntelliTrace 现在我来解释发生了什么 string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post"; StreamReader sr = new StreamRea

我知道这场崩溃以前在某些情况下已经解决了,但在你称之为重复之前,请阅读以下内容:

  • 我已尝试重新安装VS2012框架
  • 我已尝试删除可能导致此崩溃的注册表值
  • 我已尝试重新安装VS2012
  • 我已尝试禁用IntelliTrace
现在我来解释发生了什么

string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post";
StreamReader sr = new StreamReader(spath);
string text = sr.ReadToEnd();
sr.Close();
有两个文件:zPosting_0.post(17MB)和zPosting_2.post(2MB)

当我阅读zPosting_2.post并解析它时,它工作得很好。 当我阅读zPosting_0.post时,当我试图解析文本时,它会崩溃。

这是一条信息:

我不知道是什么原因导致了这个问题,但我想可能是由于缓冲区大小的限制

我在Windows7 32位上使用VS2012

如何在不拆分文件的情况下防止此崩溃?不逐行阅读

提前谢谢

编辑 以下是第一行解析器:

string sTerm = "";
List<int> index = new List<int>();
List<int> docs = new List<int>();
int iTF = 0;
int iDF = 0;

int i1, i2;
i1 = 0;
i2 = text.IndexOf("_");
sTerm = text.Substring(0, i2);
string sTerm=”“;
列表索引=新列表();
列表单据=新建列表();
int-iTF=0;
int-iDF=0;
inti1,i2;
i1=0;
i2=text.IndexOf(“”);
sTerm=text.Substring(0,i2);

它有时在“inti1,i2;”时崩溃,有时在“i1=0”时崩溃。

可能有点晚,但对于遇到此问题的任何其他人来说

很可能是
string text=sr.ReadToEnd()导致崩溃。可能是一个损坏的文件?不管怎样,您可以尝试下面的代码,并循环将行添加到字符串中

string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post";
string text = string.Empty;

using (var sr = new StreamReader(spath))
 {
     while (!sr.EndOfStream)
     {
         text += sr.ReadLine();
     }
 }
或者,如果
.EndOfStream
也会导致问题,您可以尝试

string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post";
string line, text = string.Empty;

using (var sr = new StreamReader(spath))
 {
      while ((line = sr.ReadLine()) != null)
      {
           text += line; 
      }
 }

希望这有帮助。

这不会引发调试器可以捕获的任何异常吗?另外,文件是否真的有17Mb的文本(而不是二进制格式)?你说当你去解析文本时它崩溃了,但是你给我们的代码只是在加载它。我们看到的是正确的问题吗?打开事件查看器,在应用程序日志@AI G中查找未捕获的异常,是的,这是我不知道的。解析器工作得很好,因为当我解析其他文件(使用完全相同的语法)时,它工作得很好。问题不在解析器中——事实上它在“int I1,I2”行的某个地方崩溃,有时在“I1=0”,我认为它是安全的。如果您的意思是在SR.Read toEnter()上崩溃,“-这是读取文件,而不是解析它。哪一行实际上抛出了异常?向我们展示调用堆栈。