using System.Text; namespace CLI.Monitor; public class CliTaskMonitor : TaskMonitor { /// public CliTaskMonitor(IEnumerable<(string? Name, Task Task)> tasks) : base(tasks) { } /// public CliTaskMonitor(IEnumerable tasks) : base(tasks) { } #region Overrides of TaskMonitor /// protected override void OnUpdate(ICollection<(string? Name, Task Task)> tasks) { var sb = new StringBuilder(tasks.Count * 30); foreach (var (name, task) in tasks) { sb.Append($"{StatusMap[task.Status],-5}"); if (name is not null) { sb.Append(": ") .Append(name); } sb.AppendLine(); if (task.Exception is not null) { sb.Append("> EX: ") .AppendLine(task.Exception.Message); } } sb.AppendLine(); Console.Clear(); Console.Write(sb.ToString()); } #endregion }