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(); // ручками толкаем таймер, так как мы пропустили этап обновлений, где он запускается //} }
private void UpdateAuthorCommand_Executed(object sender, ExecutedRoutedEventArgs e) { Author author = (Author) AuthorsListBox.SelectedValue; if (author.IsUpdated) return; _logger.Add(string.Format("'{0}' проверяется", author.Name)); Updater updater = new Updater(_setting, _logger) {ManualUpdater = true}; updater.UpdaterComplete += ((o, arg) => { if (arg.Error != null) { _logger.Add(arg.Error.StackTrace, false, true); _logger.Add(arg.Error.Message, false, true); _logger.Add(string.Format("'{0}' не проверен. Ошибка.", author.Name), true, true); } else { _logger.Add(string.Format("'{0}' проверен", author.Name)); AuthorsListBox.ScrollIntoView(AuthorsListBox.SelectedValue); } }); updater.RunWorkerAsync(new List<Author> {author}); }