我有一个名为“images”的列表,其中包含大约20张每张1MB的照片。我想通过点击下一个按钮在列表中滚动浏览这些图像。但是在大约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;而不创建新的位图,则不会出现此错误,但是线程中会出现竞争条件异常。