それぞれ約1MBの写真を約20枚含む「画像」のリストがあります。次のボタンをクリックして、リスト内の画像をスクロールしたいと思います。しかし、約8枚の写真の後、私は記憶から抜け出します。
private void button4_Click(object sender, EventArgs e) //next
{
index++;
if (index >= images.Count) index = 0;
CurrImage = images[index];
Bitmap b = new Bitmap((Bitmap)CurrImage.Clone()); //breakpoint occurs her
pictureBox1.Image = b;
NewThread = new Thread(new ThreadStart(ChooseColors2));
}
ChooseColors2スレッドは「CurrImage」を使用するため、競合状態を回避するために、上記のように新しいビットマップを作成することで競合状態を回避しました。
私がpictureBox1.Image=CurrImage;を使用する場合は、注意してください。新しいビットマップを作成せずにこのエラーは発生しませんが、スレッドで競合状態の例外が発生します。