内部に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() の影響を受けるようにするにはどうすればよいかということです。