日期:2014-05-18  浏览次数:20440 次

程序未完成循环就结束是什么问题?
我在button里面写了一段代码,读取一个二进制文件然后写入一个文本文件,如下:
for (int i = 0; i < tmp.Length; i++)
{
  tmp[i] = br.ReadInt16();//br是二进制读取用的binaryReader
  txtTmp.WriteLine(tmp.Length+" "+i.ToString()+" "+tmp[i]);  
}

tmp.length数值是23766,但是从来没有循环完成,i经常循环到236XX这个范围的数就结束了,文本最后部分会显示
……
23766 23638 100
23766 23639 80
23766 23640 110
23766 23641 100
23766 23642 150
23
好像被掐断循环一样,而且每次中断结束的i值都不一样,最接近结果的一次是在23760时中断,这是为何呢,桌面版程序就不会出现这种情况。。。。

------解决方案--------------------
加个Try Catch看看,或者里面加上if(i>=23642){
//里面什么都不写,断点打在这里调试看看怎么回事
}
------解决方案--------------------
先调试,看看报错时,br是否还有数据可读,是否有超出了Int16范围的数字
------解决方案--------------------
try catch, 找原因
------解决方案--------------------
这个应该是什么地方超了maxLength了.查一下.或者把tmp.Length这个数不输出看是不是会完成整个循环.
------解决方案--------------------
调试运行最清楚
------解决方案--------------------
txtTmp.Flush();