Bas*_*sco 5 c# clone bitmap winforms
我有一个列表"图像",其中包含约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));
}
Run Code Online (Sandbox Code Playgroud)
ChooseColors2线程将使用"CurrImage"以避免竞争条件,我通过创建一个新的位图避免了这一点,如上所示
请注意,如果我使用pictureBox1.Image = CurrImage; 没有创建一个新的位图我没有得到这个错误,但线程将有竞争条件异常.
您可以在将新位图分配给 之前尝试调用以下命令pictureBox1.Image,以删除以前的“新”位图并释放资源:
pictureBox1.Image.Dispose();
Run Code Online (Sandbox Code Playgroud)