Dobrý den, prosím pomozte mi - snažím se procházet kolekci a nemůžu přijít na to, proč dochází k přeindexování. Radši pošlu rovnou ukázku kódu.
Mám:
public event EventHandler<BrickRemovedEventArgs> BrickRemoved;
public class BrickRemovedEventArgs : EventArgs
{
public BrickRemovedEventArgs(int index)
{
this.index = index;
}
public int index;
}
dále v threadu na pozadí:
for ( int i = 0; i < bricks.Count; i ++ )
{
var brick = bricks[i];
if ((brick.visible) && brick.IntersectWithCircle(circleX, circleY, circleSize))
{
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(() => BrickRemoved(this, new BrickRemovedEventArgs(i))));
}
}
a dále:
private void ArkanoidViewModel_BrickRemoved(object sender, BrickRemovedEventArgs e)
{
bricks[e.index].visible = false;
}
Objektů v List<brickInfo> bricks je 24, tedy 0..23. Proč ale tedy program spadne na e.index = 24. Jak by se tam ta hodnota mohla dostat, když indexuju od nuly po bricks.Count? Kontejner nikdo od zalozeni ani v prubehu co do prvku nemeni.
Nevite prosim, kde by mohla byt chyba?
H.