private void _timer_Starter_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { _timerStarter.Stop(); int streamNumber = GetFreeStream(); if (streamNumber >= 0) { try { // проверка связи с БД и соответствующая отметка //if (CheckDBConnection("SPM таймер запуска стартовал. ", streamNumber, false)) { DataDBJob job = null; try { // считаем задание и попытаемя его запустить lock (_siteBusy) { lock (newjoblockstring) { job = new DataDBJob(_dbConnectionString, streamNumber, true, _siteBusy); if (job != null) { if (!String.IsNullOrEmpty(job.Site)) { if (!string.IsNullOrEmpty(job.Site)) // задание захвачено { _siteBusy[streamNumber] = job.Site; // сайт занят lock (_siteBusyStart) _siteBusyStart[streamNumber] = DateTime.Now; } } else { _timerStarter.Interval = 15000; Console.WriteLine(DateTime.Now+" no work"); } } else { _timerStarter.Interval = 15000; Console.WriteLine(DateTime.Now+" no work"); } } } if (!String.IsNullOrEmpty(job.Site)) { Console.WriteLine(DateTime.Now + " On " + streamNumber + " stream started job " + job.Site); //ShowInfoMessage(); _timerStarter.Interval = 1; //_timerStarter.Start(); _timerStarter.Enabled=true; job.StartJob(); } } catch (Exception ex) // ловим ошибку плагина { DataDBService ddbs = new DataDBService(); lock (_siteBusy) ddbs.WriteErrorMessage(_dbConnectionString, streamNumber, "Сайт " + _siteBusy[streamNumber] + ". Необработанная ошибка плагина", ex.Message); ddbs.Dispose(); GC.SuppressFinalize(ddbs); } finally { if (job != null) { lock (_siteBusy) { if (!string.IsNullOrEmpty(_siteBusy[streamNumber])) { Console.WriteLine(DateTime.Now + " On " + streamNumber + " stream finished job " + job.Site); _siteBusy[streamNumber] = ""; // сайт свободен _siteBusyStart[streamNumber] = DateTime.MaxValue; _timerStarter.Interval = 1; //_timerStarter.Start(); //ShowInfoMessage(); } else _timerStarter.Interval = 15000; } { job.Dispose(); GC.SuppressFinalize(job); } } _timerStarter.Start(); //CheckDBConnection("SPM таймер запуска остановлен. ", streamNumber, false); } } } catch (Exception ex) // ловим ошибку соединения с БД { Console.WriteLine("Ошибка 5675 "+ex.Message); } finally { lock (_siteBusy) _siteBusy[streamNumber] = ""; // сайт свободен } } else { _timerStarter.Interval = 15000; _timerStarter.Start(); Console.WriteLine(DateTime.Now + " No free threads"); } }
public void OnStop() { //Останавливаем таймер Starter if(this._timerStarter!=null) this._timerStarter.Stop(); //Останавливаем таймер Scheduler if(this._timerScheduler!=null) this._timerScheduler.Stop(); // активность: выключение DataDBService ddbs = new DataDBService(); ddbs.WriteMessageAboutActivity(_dbConnectionString, 10001, "SPM остановлен."); ddbs.Dispose(); GC.SuppressFinalize(ddbs); // незаконченные задания - сброс состояния "занято" DataDBJob job = new DataDBJob(_dbConnectionString, 10002, false, new string[20]); job.JobToNoBusy(); job.Dispose(); GC.SuppressFinalize(job); }