private static bool CheckConnectFed() { var timerRestoreConnect = Timers[UpdatelEnum.RestoreConnection]; timerRestoreConnect.Enabled = false; Logger.Trace("Проверка коннекта."); bool result; if (MainActivityRer.CheckConnectDataBase()) { result = MainActivityRer.CheckConnectSocket(); } else { result = false; } SwitchTimers(result); if (!result) { Logger.Trace("Коннекта пока нет. Попробуем позже через {0} сек...", timerRestoreConnect.Interval / 1000); timerRestoreConnect.Enabled = true; } else { Logger.Trace("КОННЕКТ ПОЯВИЛСЯ! :) Работаем в штатном режиме."); } _isConnected = result; return(result); }
static void Main(string[] args) { SQL.ConnectionString = ConfigurationManager.AppSettings["ConsoleConnectionString"].ToString(); //"Provider=PostgreSQL; Unicode=true; host=192.168.1.11; Database=webtalonXtula; user=asu; password=asu"; var threadCount = Settings.Default.ThreadCount; var lpu = "2370b2cd-c7ec-432b-aed5-93e074ee45a9"; var datetimebegin = DateTime.Now; MainActivityRer.UpdatePrescs(1, datetimebegin); }
private void DoWorkFed() { _threadCount = 0; MainActivityRer.Initialize(Settings.Default.ConnectionStringDatabase); Logger.Trace("WCFLibClient.ConnectionString: <{0}>", SQL.ConnectionString); try { /*Timers[UpdatelEnum.UpdateLpuSettings] = CreateTimer(TimerElapsedUpdateLpuSettings, Settings.Default.TimerIntervalUpdateLpuSettings, "TimerIntervalUpdateLpuSettings"); * Timers[UpdatelEnum.UpdateAreas] = CreateTimer(TimerElapsedUpdateAreas, Settings.Default.TimerIntervalUpdateAreas, "TimerIntervalUpdateAreas"); * Timers[UpdatelEnum.UpdateSchedule] = CreateTimer(TimerElapsedUpdateSchedule, Settings.Default.TimerIntervalUpdateSchedule, "TimerIntervalUpdateSchedule"); * Timers[UpdatelEnum.UpdatePeople] = CreateTimer(TimerElapsedUpdatePeople, Settings.Default.TimerIntervalUpdatePeople, "TimerIntervalUpdatePeople"); * Timers[UpdatelEnum.UpdateArrival] = CreateTimer(TimerElapsedUpdateArrival, Settings.Default.TimerIntervalUpdateArrival, "TimerIntervalUpdateArrival"); * Timers[UpdatelEnum.UpdateReferral] = CreateTimer(TimerElapsedUpdateReferral, Settings.Default.TimerIntervalUpdateReferral, "TimerIntervalUpdateReferral"); * Timers[UpdatelEnum.UpdateCall] = CreateTimer(TimerElapsedUpdateCall, Settings.Default.TimerIntervalUpdateCall, "TimerIntervalUpdateCall"); * Timers[UpdatelEnum.CleanBuffers] = CreateTimer(TimerElapsedCleanBuffers, Settings.Default.TimerIntervalCleanBuffers, "TimerIntervalCleanBuffers"); * Timers[UpdatelEnum.RestoreConnection] = CreateTimer(TimerElapsedRestoreConnect, Settings.Default.TimerIntervalRestoreConnect, "TimerRestoreConnect"); * Timers[UpdatelEnum.UpdateLpuNames] = CreateTimer(TimerElapsedUpdateLpuNames, Settings.Default.TimerIntervalUpdateLpuNames, "TimerUpdateLpuNames");*/ Timers[UpdatelEnum.UpdatePrescs] = CreateTimer(TimerElapsedUpdatePrescs, Settings.Default.TimerIntervalUpdatePrescs, "TimerUpdatePrescs"); if (CheckConnectFed()) { SwitchTimers(false); if (_isConnected) { UpdateFedBase(UpdatelEnum.UpdateSchedule); } if (!_isPause && _isConnected) { SwitchTimers(true); foreach (var timer in Timers) { LogNextTime(timer.Value, timer.Key.ToString()); } } } } catch (Exception ex) { Logger.Error(ex); } }
/* * private void TimerElapsedUpdateLpuSettings(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateLpuSettings]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateLpuSettings); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateLpuSettings], UpdatelEnum.UpdateLpuSettings.ToString()); * } * } * * private void TimerElapsedUpdateAreas(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateAreas]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateAreas); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateAreas], UpdatelEnum.UpdateAreas.ToString()); * } * } * * private void TimerElapsedUpdateSchedule(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateSchedule]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateSchedule); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateSchedule], UpdatelEnum.UpdateSchedule.ToString()); * } * } * * private void TimerElapsedUpdatePeople(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdatePeople]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdatePeople); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdatePeople], UpdatelEnum.UpdatePeople.ToString()); * } * } * * private void TimerElapsedUpdateArrival(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateArrival]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateArrival); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateArrival], UpdatelEnum.UpdateArrival.ToString()); * } * } * * private void TimerElapsedUpdateReferral(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateReferral]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateReferral); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateReferral], UpdatelEnum.UpdateReferral.ToString()); * } * } * * private void TimerElapsedUpdateCall(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateCall]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateCall); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateCall], UpdatelEnum.UpdateCall.ToString()); * } * } * * private void TimerElapsedCleanBuffers(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.CleanBuffers]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.CleanBuffers); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.CleanBuffers], UpdatelEnum.CleanBuffers.ToString()); * } * } * * private void TimerElapsedUpdateLpuNames(object sender, ElapsedEventArgs e) * { * var timer = Timers[UpdatelEnum.UpdateLpuNames]; * timer.Enabled = false; * UpdateFedBase(UpdatelEnum.UpdateLpuNames); * if (!_isPause && _isConnected) * { * timer.Enabled = true; * LogNextTime(Timers[UpdatelEnum.UpdateLpuNames], UpdatelEnum.UpdateLpuNames.ToString()); * } * } * * private void TimerElapsedRestoreConnect(object sender, ElapsedEventArgs e) * { * CheckConnectFed(); * } */ private static void UpdateFedBase(UpdatelEnum aCode) { // ограничиваем размер очереди if (_threadCount >= 10) { Logger.Trace("CAST AWAY code: {1} (current count = {0})", _threadCount, aCode); return; } //кол ожидающих в очереди _threadCount++; Logger.Trace("Thread count = {0} ++ (code: {1})", _threadCount, aCode); // блокируем параллелльное вхождение lock (InstanceLockObjectFed) { bool res = false; try { var timeBegin = DataRepository.GetCurrentTimestamp(); //запускаем все проливки в одно время Logger.Trace("Service: {0}; datetime_on: {1}", aCode, timeBegin.ToString()); switch (aCode) { case UpdatelEnum.UpdatePrescs: MainActivityRer.UpdatePrescs(Settings.Default.ThreadCount, timeBegin); res = true; break; /* * case UpdatelEnum.UpdateLpuSettings: * //MainActivityRer.UpdateLpuSettings(Settings.Default.ThreadCount); * res = true; * break; * * case UpdatelEnum.UpdateAreas: * //MainActivityRer.UploadAreas(Settings.Default.ThreadCount); * res = true; * break; * * case UpdatelEnum.UpdateArrival: * //MainActivityRer.UploadArrival(true, Settings.Default.ThreadCount); * res = true; * break; * * case UpdatelEnum.UpdateCall: * //MainActivityRer.UploadCall(Settings.Default.ThreadCount); * res = true; * break; * * case UpdatelEnum.UpdatePeople: * //MainActivityRer.UploadPeople(true, Settings.Default.ThreadCount); * res = true; * break; * * case UpdatelEnum.UpdateReferral: * //MainActivityRer.UploadReferral(Settings.Default.ThreadCount); * res = true; * break; * * case UpdatelEnum.UpdateSchedule: * //MainActivityRer.UpdateDoctors(Settings.Default.ThreadCount, timeBegin); * //MainActivityRer.UploadSchedule(true, Settings.Default.ThreadCount, timeBegin); * //MainActivityRer.UploadPeople(true, Settings.Default.ThreadCount, timeBegin); * //MainActivityRer.UploadArrival(true, Settings.Default.ThreadCount, timeBegin); * res = true; * break; * * case UpdatelEnum.UpdateLpuNames: * //MainActivityRer.UpdateLpuNames(); * res = true; * break; * * case UpdatelEnum.CleanBuffers: * //MainActivityRer.CleanBuffers(); * res = true; * break;*/ } } catch (Exception ex) { Logger.Error(ex); res = false; } finally { _threadCount--; Logger.Trace("Service: {0} - {1}. Thread count = {2} --", aCode, res, _threadCount); if (!res) { CheckConnectFed(); } } } }