private async Task BroadcastAggregate(Reference <DataAggregate> aggregate, OrchestratorTwin twin) { List <Task> messages = new List <Task>(); foreach (Routing item in Enum.GetValues(typeof(Routing))) { if (twin.RoutingMode.HasFlag(item)) { switch (item) { case Routing.VisualizeFeature: messages.Add(Visualization.PublishAsync(new GraphData() { CorrelationID = "Feature", Values = aggregate.Message.Values } )); break; case Routing.FeatureExtraction: messages.Add(FeatureExtraction.PublishAsync(new DataAggregate() { CorrelationID = "Feature", Values = aggregate.Message.Values })); break; default: continue; } } } if (messages.Count > 0) { await Task.WhenAll(messages); } }