ror*_*yok 3 c# arrays indexoutofboundsexception
我刚刚遇到一个独特的错误,一个实时网站在登录时抛出"索引超出了数组的范围".我将错误跟踪到从旧项目继承的旧"计时"文件.这是完整的课程
public class TimingObject
{
public DateTime timestamp { get; set; }
public String call { get; set; }
public TimeSpan duration { get; set; }
// create a new timing object starting now
public TimingObject()
{
timestamp = DateTime.Now;
}
public TimingObject(String call)
{
timestamp = DateTime.Now;
this.call = call;
}
public void Stop()
{
List<TimingObject> timings;
if (HttpContextManager.Current.Cache["PageTimings"] == null)
timings = new List<TimingObject>();
else
timings = HttpContextManager.Current.Cache["PageTimings"] as List<TimingObject>;
this.duration = (DateTime.Now - this.timestamp);
timings.Add(this);
HttpContextManager.Current.Cache["PageTimings"] = timings;
}
}
Run Code Online (Sandbox Code Playgroud)
这个错误被抛出了timings.Add(this).将项目添加到列表Index was out of bounds时为什么会抛出?
如果列表太大,会发生这种情况吗?它到底有多大?
代码是多余的,已被删除.但我真的很想知道为什么会这样.
List<T>不是线程安全的,这段代码看起来很可疑,就像你List<T>从多个线程中获取一个共享实例一样.我怀疑你是在同时从两个不同的线程添加到列表中,然后抛弃正在进行List工作的数组.
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |