我有两个线程,它们分别生成一系列图像。每个线程称为“line-1”和“line-2”。
我使用以下代码将其他两个线程的输出相互混合。但是我期望从这个线程获得系列输出图像,但它不会给我任何输出。
//thread 3
private Bitmap RandomImageSelection()
{
Bitmap image;
if (randomGenerator.Next(2) == 0 && line1.TryDequeue(out image))
{
return image;
}
if (line2.TryDequeue(out image))
{
return image;
}
pictureBox3.Image = image;
return null;
}
有谁能告诉我如何从队列到我的pictureBox3从这个线程3获取一系列图像?
答案 0 :(得分:2)
您的代码返回时未分配到图片框。它将始终为Picturebox分配null。也许你应该改写它:
private Bitmap RandomImageSelection()
{
Bitmap image = null;
if (randomGenerator.Next(2) == 0 && !line1.TryDequeue(out image))
{
line2.TryDequeue(out image)
}
if (image != null)
{
pictureBox3.Invoke(new Action(() => pictureBox3.Image = image));
}
return image;
}
在这种情况下,如果line1为空,它将从line2中选择,因此它将排空line2。
编辑:添加了调用代码,因为这可能不会在UI线程中执行。
答案 1 :(得分:0)
您没有将图像设置到图片框
Bitmap image;
if ((randomGenerator.Next(2) == 0)? line1:line2).TryDequeue(out image))
{
pictureBox3.Image = image;
return image;
}
return null;