我有一个图像显示队列。我从队列中取出一张图像,显示它,等待两秒钟,然后拍摄下一张。但是,队列充满了来自外部的事件,因此可以在处理其他项目时将项目添加到其中。在我的代码中,调用 ShowImage() 方法会创建一个并行循环,因此图像不会延迟。我怎么解决这个问题?
// Метод вызывается по событию.
private void AddImageToSchedule(int imgNumber)
{
switch (imgNumber)
{
case 1:
_schedule.Enqueue(_images[ImagesNames.FirstBlood]);
break;
case 2:
_schedule.Enqueue(_images[ImagesNames.DoubleKill]);
break;
case 3:
_schedule.Enqueue(_images[ImagesNames.TripleKill]);
break;
case 4:
_schedule.Enqueue(_images[ImagesNames.UltraKill]);
break;
case 5:
_schedule.Enqueue(_images[ImagesNames.Riot]);
break;
}
ShowImage();
}
private async void ShowImage()
{
while (_schedule.Count != 0)
{
var img = _schedule.Dequeue();
_ui.ShowImage(img);
await Task.Delay(SHOW_TIME);
}
}