private async Task HandlePart(WorkPart part, CancellationToken cancellationToken) { var items = part.WorkItems; var tasks = items .Select(w => w.Run(cancellationToken)) .ToList(); while (tasks.Count != 0) { var completed = await Task.WhenAny(tasks); tasks.Remove(completed); var logMessage = BuildStatus(); logger.LogInformation(logMessage); var workItem = items.SingleOrDefault(w => w.Id == completed.Result); } }
private static char WorkPartIcon(WorkPart part) { return(TaskIcon(part.Status)); }