如何从C#中的队列<t>获取输出结果?</t>

时间:2014-03-18 17:04:16

标签: c# image queue

我有两个线程,它们分别生成一系列图像。每个线程称为“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获取一系列图像?

2 个答案:

答案 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;