我有一个我通过调用向该列表添加另一个整数来List<int>
更新每次调用Update()
Add()
在每次调用 时Draw()
,我都会使用foreach
它List
并使用存储int
在屏幕上绘制一些东西。
我遇到的问题是前几帧(即很少调用更新),我的列表不同步。我添加的东西永远不会出现。
我使用此代码向文件添加了一些跟踪:
log.WriteLine("start list with count " + Actions.Count);
int nextAction = getNextAction(); // right now this is just some additions
Actions.Add(nextAction);
movelog.WriteLine("end list with count " + Actions.Count);
我得到这个踪迹:
start list with count 0
end list with count 1
start list with count 0
end list with count 1
start list with count 0
end list with count 1
start list with count 0
end list with count 1
start list with count 0
end list with count 1
start list with count 1
end list with count 2
start list with count 2
end list with count 3
start list with count 3
end list with count 4
正如您所看到的对这部分代码的前几次调用(即调用Update()
),我添加到列表中,然后在下次调用它时它神奇地消失了,就好像没有添加到列表中一样。第五次之后,它终于起作用了。这在运行中非常一致。
我尝试锁定列表对象,并且得到完全相同的行为。
我的代码怎么了?我难住了。我没有并行执行任何操作,并且ManagedThreadId
每次添加到列表时都尝试跟踪,并且线程 ID 相同。