Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        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;
            }
        }