标题中有几个问题,但没有一个可以帮助我或指导我解决我的问题。
我正在使用 C# winform 构建实时或近实时成像应用程序。
但是在winform中将图像分配给PictureBox
pictureBox.Image = image;
Object is currently in use elsewhere.
基本上在 5-20 分钟内给出一个随机异常。
我搜索了有关此问题的材料,但找不到正确的解决方案。当程序只是将图像设置为从队列中显示时发生错误。因此,图像无法在其他线程中使用。
在这一点上,我不确定 winform 是否适合成像应用程序。我是否必须转移到另一个平台,例如 WPF?
我需要有经验的建议。
更新:正如 Nathanael 指出的,我可以从多线程访问图片框,所以我假设多线程可以访问图片框的图像。因此,当我将上面的行更改为以下行时,我不再收到任何错误。
private void SetImage(Bitmap image)
{
if (this.pictureBox.InvokeRequired)
{
SetImageCallback callback = new SetImageCallback(SetImage);
this.BeginInvoke(callback, new object[] { image });
}
else
{
pictureBox.Image = image;
}
}