using System.Collections.Concurrent; using Microsoft.Extensions.Logging; namespace ConsoleApp2.Services; public class TaskManager { private readonly ConcurrentBag _tasks; private readonly ILogger _logger; public int RunningTaskCount => _tasks.Count(task => !task.IsCompleted); public IReadOnlyCollection Tasks => _tasks; public bool MainTaskCompleted { get; set; } public TaskManager(ILogger logger) { _tasks = new ConcurrentBag(); _logger = logger; } public Task CreateTask(Func func) { var task = Task.Factory.StartNew(func); _tasks.Add(task); _logger.LogDebug("New task created."); return task; } }