MES-ETL/ConsoleApp2/Services/TaskManager.cs
2023-12-28 15:18:03 +08:00

28 lines
765 B
C#

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