public static Task[] Schedule <TTask>(Source source, bool startNow) where TTask : TaskRunBlockchain, new() { using (var connection = new MySqlConnection(OTHubSettings.Instance.MariaDB.ConnectionString)) { var blockchains = connection.Query(@"SELECT * FROM blockchains WHERE enabled = 1").ToArray(); List <Task> tasks = new List <Task>(); foreach (var blockchain in blockchains) { TTask task = new TTask(); int id = blockchain.ID; string blockchainName = blockchain.BlockchainName; string networkName = blockchain.NetworkName; Logger.WriteLine(Source.BlockchainSync, $"Setting up processes for {blockchainName} {networkName}. Task is " + task.Name); BlockchainType blockchainEnum = Enum.Parse <BlockchainType>(blockchainName); BlockchainNetwork networkNameEnum = Enum.Parse <BlockchainNetwork>(networkName); TimeSpan interval = task.GetExecutingInterval(blockchainEnum); tasks.Add(Task.Run(async() => { TaskController controller = new TaskController(source); var item = new TaskControllerItem(blockchainEnum, networkNameEnum, controller._source, task, interval, startNow, id); controller._items.Add(item); await controller.Start(); })); } return(tasks.ToArray()); } }
public void Schedule(TaskRunGeneric task, TimeSpan runEveryTimeSpan, bool startNow) { var item = new TaskControllerItem(_source, task, runEveryTimeSpan, startNow); _items.Add(item); }