public void StateAdminClearDbStart() { if (_currentState == AppState.AdminClearDbConfirm) { SetState(AppState.AdminClearDbStart); _adminPage.CellWindow.Visibility = Visibility.Hidden; _adminPage.CellOpenReasonWindow.Visibility = Visibility.Hidden; _adminPage.ClearDbConfirmWindow.Visibility = Visibility.Hidden; _adminPage.UncloseableMsgBox.Visibility = Visibility.Visible; _adminPage.AdminListCanvasBlur.Radius = 20; //button ok hidden _adminPage.ButtonOkUMsgBox.Visibility = Visibility.Hidden; _adminPage.UMsgBoxTitle.Text = "Ожидание"; _adminPage.UMsgBoxMessage.Text = "Идет процесс очистки БД"; DbSyncronizer.GetInstance().ClearDatabase(); StateAdminClearDbFinished(); } }
private static void OnDbSyncTimer(object source, ElapsedEventArgs e) { //для исключения одновременных запусков обработки, если предыдущие не завершились if (Monitor.TryEnter(TimerDbLocker)) { try { //попытка синхронизации баз данных, если неудачно то ожидаем следующей DbSyncronizer.GetInstance().SyncDatabases(); //Debug.WriteLine("sync success"); } catch (Exception) { //log? //Debug.WriteLine("sync error"); } finally { Monitor.Exit(TimerDbLocker); } } }
public void StateInit() { SetState(AppState.Init); bool.TryParse(ConfigurationManager.AppSettings.Get("InitialSyncMandatory"), out var mandatory); try { SqlMapper.AddTypeMap(typeof(DateTime), DbType.DateTime2); //обязательная синхронизация баз данных при старте приложения try { DbSyncronizer.GetInstance().SyncDatabases(); } catch (Exception) { if (mandatory) { throw; } } //инициализация железа InitBarcodeScanner(); InitCellsController(); //таймер для периодической синхронизации баз данных InitDbSyncTimer(); StateMainMenu(); } catch (Exception ex) { _logger.Error(ex, "init error"); StateInitError(ex is SyncException ? "ошибка синхр. бд" : ex.Message); } }