我有一个Canvas
里面有很多小帆布。如果我单击其中任何一个,它会Thread
使用特定方法创建一个(例如,将另一个小画布添加到主画布并在其周围移动)。当我点击一个特定的按钮时,我需要让一些小画布变大。所以我尝试了一个foreach
循环,但应用程序崩溃并向我显示了这个错误:
InvalidOperationException:集合已修改;枚举操作可能无法执行
我认为发生这种情况是因为存在上下文切换,所以我在方法中添加了一个锁,但问题仍然存在。我的代码如下:
private void BacteriaPsiEspecial(object sender , MouseButtonEventArgs e)
{
lock (sender)//Maybe here is the problem
{
//The application crashes here
foreach (Canvas LittleCanvas in CanvasSimulador.Children)
{
if(LittleCanvas.Uid.Equals("SomeId"))
{
//Method to make each one grow growMethod()
}
}
}
}
我不知道是否foreach
可以做到这一点。我必须使用很多线程,因为所有小画布都在主画布周围不断移动。问题是,我能做些什么来让这些画布中的一些受到 growMethod() 的影响?