对于这个标题,有几个问题,但都没有帮助我或指导我解决我的问题。
我正在使用C# winform构建一个实时或接近实时的图像应用程序。
但在winform中将图像分配给PictureBox
pictureBox.Image = image;
该程序在5-20分钟内会随机抛出一个异常:Object is currently in use elsewhere.
我查阅了相关资料,但未找到解决方案。该错误是在程序从队列中简单地设置图像以显示时发生的,因此图像不可能在其他线程中被使用。
目前,我不确定WinForm是否是用于图像应用程序的正确平台。是否需要转移到另一个平台,如WPF?
我需要经验丰富的人士提供建议。
更新: 正如Nathanael指出的那样,我可以从多个线程访问picturebox,因此我假设多个线程可以访问picturebox的图像。因此,当我将上述行更改为以下内容时,就不再出现任何错误。
private void SetImage(Bitmap image)
{
if (this.pictureBox.InvokeRequired)
{
SetImageCallback callback = new SetImageCallback(SetImage);
this.BeginInvoke(callback, new object[] { image });
}
else
{
pictureBox.Image = image;
}
}