using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using JD.Interfaces.Composition;
using JD.Interfaces.Composition.Units;
namespace JD.Core
{
///
/// Manager handling task creation. This manager is able to overload tasks according to the framework components availability.
///
public class TaskManager
{
static TaskManager()
{
Instance = new TaskManager();
}
public static TaskManager Instance { get; }
private readonly IEnumerable _availableOverloads;
protected TaskManager()
{
_availableOverloads = Objects.GetAllInstances();
}
public Task CreateTask(Action action)
{
return new Task(OverloadTask(action));
}
public Task CreateTask(Action action, CancellationToken cancellationToken)
{
return new Task(OverloadTask(action), cancellationToken);
}
public Task CreateTask(Action action, TaskCreationOptions creationOptions)
{
return new Task(OverloadTask(action), creationOptions);
}
public Task CreateTask(Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
{
return new Task(OverloadTask(action), cancellationToken, creationOptions);
}
public Task CreateTask(Action