28 lines
765 B
C#
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;
|
|||
|
}
|
|||
|
}
|