public static void Init(Setting setting, Logger logger)
        {
            _setting = setting;
            _logger  = logger;
            // в зависимости от того, используем БД или нет, грузим данные из разных мест
            if (setting.UseDatabase)
            {
                MainWindow.MainForm.InitializeDatabase(false);
                LoadDataFromDatabase();
            }
            else
            {
                LoadDataFromXml();
            }
            ClearAuthorsChengedStatus();
            Authors.ListChanged += ((o, e) => Refresh());
            OutputCollection     = new ObservableCollection <object>();
            Refresh();

            _updater = new Updater(_setting, _logger);
            _updater.UpdaterComplete += UpdaterComplete;

            _updateTimer = new Timer {
                Interval = 60000, AutoReset = false
            };                                                                // 3600000
            _updateTimer.Elapsed += (o, e) =>
            {
                if (!IsBusy())
                {
                    UpdateAuthors();
                }
            };

            _messageBrokerTrayInfoCollectorTimer = new Timer {
                Interval = 10000, AutoReset = false
            };
            _messageBrokerTrayInfoCollectorTimer.Elapsed += (s, e) =>
            {
                if (!string.IsNullOrWhiteSpace(_messageBrokerTrayInfo))
                {
                    MainWindow.ShowTrayInfo(_messageBrokerTrayInfo.Trim());
                    _messageBrokerTrayInfo = "";
                    Save();
                }
                _messageBrokerTrayInfoCollectorTimer.Stop();
            };



#if !DEBUG
            if (_setting != null && _setting.IntervalOfUpdate > 0)
            {
                if (_setting.UseMessageBroker)
                {
                    // запускаем проверку с сервера статистики в ручном режиме, то есть true, что значит надо проверить всех авторов из списка с сервера статистики и не запускать проверку с оригинала сайта для всех авторов
                    _logger.Working = true;
                    UpdateAuthorsFromStatServer(true, () =>
                    {
                        StatServerUpdating = false;
                        if (_setting.UseMessageBroker)
                        {
                            _logger.Add(string.Format("{0} Проверка авторов с сервера статистики окончена", DateTime.Now.ToShortTimeString()));
                        }
                        // проверить авторов согласно расписанию
                        UpdateAuthorsFromSI(false);
                    });
                }
                else
                {
                    UpdateAuthorsFromSI(false); // Запсутить првоерку с сайта оригинала согласно плана проверок
                }
            }
#else
            _updateTimer = new Timer {
                Interval = 60000, AutoReset = false
            };
#endif

            _setting.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == "IntervalOfUpdate")
                {
                    UpdateIntervalAndStart();
                    //_logger.Add("Периодичность обновления: " + IntervalOfUpdateConverter.Parse(_setting.IntervalOfUpdate));
                    _logger.Add(_setting.IntervalOfUpdate == 0 ? "Периодичность проверок обновлений остановлена в настройках" : "Периодичность проверок обновлений запущена");
                }
            };

            TimerBasedAuthorsSaver.StartMonitoring(false);
        }
        public static void Init(Setting setting, Logger logger)
        {
            _setting = setting;
            _logger  = logger;
            // в зависимости от того, используем БД или нет, грузим данные из разных мест
            if (setting.UseDatabase)
            {
                MainWindow.MainForm.InitializeDatabase(false);
                LoadDataFromDatabase();
            }
            else
            {
                LoadDataFromXml();
            }
            ClearAuthorsChengedStatus();
            Authors.ListChanged += ((o, e) => Refresh());
            OutputCollection     = new ObservableCollection <object>();
            Refresh();

            _updater = new Updater(_setting, _logger);
            _updater.UpdaterComplete += UpdaterComplete;
#if !DEBUG
            //if (!_setting.UseGoogle) // если указано синхронизироваться с гуглом, не запускаем сразу обновление, чтобы синхронизации успела отработать и скачать возможные изменени
            UpdateAuthors();
#endif

#if !DEBUG
            // if (!_setting.UseGoogle)
            _updateTimer = new Timer {
                Interval = 3600000, AutoReset = false
            };
            //else // если используем гугл, то запускаем проверку обновления через 10 минут
            //     _updateTimer = new Timer {Interval = 60000 * 10, AutoReset = false};
#else
            _updateTimer = new Timer {
                Interval = 60000, AutoReset = false
            };
#endif
            _updateTimer.Elapsed += (o, e) => UpdateAuthors();

            _setting.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == "IntervalOfUpdate")
                {
                    UpdateIntervalAndStart();
                    _logger.Add("Периодичность обновления: " + IntervalOfUpdateConverter.Parse(_setting.IntervalOfUpdate));
                }
                //else if (e.PropertyName=="UseGoogle")
                {
                    //if (_setting.UseGoogle)
                    //    StartGoogleSync();
                    //else
                    //    StopGoogleSync();
                }
            };

            TimerBasedAuthorsSaver.StartMonitoring(false);
            // если указано синхронизироваться с Google
            //if (_setting.UseGoogle)
            //{
            //    StartGoogleSync();
            //    _updateTimer.Start(); // ручками толкаем таймер, так как мы пропустили этап обновлений, где он запускается
            //}
        }