![]() |
浏览:1972008-04-23 16:51 来自蓝色的风之精灵 : 之前我提到LumaQQ.net会出现index was outside the bounds of array这个错误,我查看了下报错的日志,发现很奇怪,大部分是在System.Collections.Generic.List`1.Clear() 或者System.Collections.Generic.List`1.Add(T item) 时出错的. 这个很奇怪,照理这两个方法都是.NET框架提供的方法,不应该报错的,难道是.NET框架本身的错误? 这个错误我没办法跟踪进去看看到底是哪里出的问题,因为大部分都要运行很长时间才会出现。 因此我想能不能规避使用List改用数组。 PS.我测试循环1亿次往List<int>里添加成员并Clear()耗时26秒,而用数组只要8秒,看来List的效率也是不如数组的 查看了代码发现,其实这个list一共只用了8个byte成员,因此,用八个元素的byte[]来代替这个List好了。 修改LumaQQ.NET.Utils.Crypter.cs 将private List<byte> baos;改为 修改WriteInt,改为 private void WriteInt(uint t) baos[baosPos] = (byte)((t & 0xff000000) >> 24); } 最后将baos.Clear();注释掉,return baos.ToArray();改为return baos;注意有两处;
好了,我尝试编译后,正常登录,正常发消息,至于会不会再出现错误要等待时间验证…… 一星期后再来报告结果 楼主
|