public void ExecuteTasks() { while (true) { if (transcodingTasksQueue.Count > 0) { TranscoderActorTask task = transcodingTasksQueue.Dequeue(); Task.Run(() => { _transcoder.Transcode(task.Source, task.Destination, task.Format); }); } if (metadataTasksQueue.Count > 0) { MetadataActorTask task = metadataTasksQueue.Dequeue(); Task.Run(() => { Dictionary <string, string> mtd = _metadataExtractor.DumpFlat(task.Source); }); } if (qualityTasksQueue.Count > 0) { QualityControlActorTask task = qualityTasksQueue.Dequeue(); Task.Run(() => { _transcoder.QualityCheck(task.Source); }); } Thread.Sleep(2000); } }