/// <summary> /// Запускаем/Перезапускаем Cron /// </summary> /// <param name="fileName"></param> /// <param name="period"></param> private void ConfigureSheduler(string fileName, int period) { // Если не дефолт - значит Job уже назначен - удаляем его if (_neededChangeJob) { _scheduler.RemoveJob(jobId); if (_playerFile != null) { _playerFile.Dispose(); _playerFile = null; } } // Если период стал 'выключено' или имя файла пустое - на выход, тут делать больше нечего. if (period == 0 || fileName == string.Empty) { return; } // Создаем наш объект проигрывания. _playerFile = new PlayWavFile(_logger, fileName); // Создаем новое задание с новыми параметрами jobId = _scheduler.AddJob <PlayEveryTimeJob>(cfg => cfg.UseCron(CrontabPatterns.GetIntervalPattern(period)).WithParameter(_playerFile)); // Установим признак что задача уже есть запущенная _neededChangeJob = true; }
private void ConfigureSheduler() { // Если у нас уже изменеения if (_neededChangeJob) { #region Remove existing jobs if (_scheduler != null) { // Удалим все задания foreach (var guid in jobsDictionary) { _scheduler.RemoveJob(guid.Key); _logger.Information($"Remove job for {guid.Value} with guid: {guid.Key}"); } _scheduler.Dispose(); _scheduler = null; // Раз задания удалили все - очищаем и хранилку их. jobsDictionary.Clear(); } if (_playerFile != null) { _playerFile.Dispose(); _playerFile = null; } #endregion } // Если количество отметок больше нуля И файл проигрывания указан - добавляем задание. if (_tsLists.Count > 0 && !string.IsNullOrEmpty(FileNameToPlay)) { if (_scheduler == null) { _scheduler = new Scheduler(); } // Создаем наш объект проигрывания. if (_playerFile == null) { _playerFile = new PlayWavFile(_logger, FileNameToPlay); } // Удаляем дубликаты если есть. var jobsTimeLists = _tsLists.Distinct().ToList(); foreach (var timeAt in jobsTimeLists) { var newGuid = _scheduler.AddJob <PlayFileAtTimeJob>(cfg => cfg .UseCron(CrontabPatterns.GetConcretePatterns(timeAt)).WithParameter(_playerFile)); jobsDictionary.Add(newGuid, timeAt); _logger.Information($"Create Job for {timeAt} by GUID: {newGuid}, with play file: {FileNameToPlay}"); } _neededChangeJob = true; } }