public decimal GetEuroToRuble(string url) { ushort counter = 0; do { counter++; try { return(_courseSource.GetEuroToRuble(url)); } catch (Exception e) { if (counter < _attempts) { _log.Warning("Attempt " + counter + " to get course of euro to ruble is failed." + Environment.NewLine + e); Thread.Sleep(_waitPeriod); } else { throw; } } } while(true); }
public void Work() { var data = _settings.Get(SettingType.Bill); var settings = _serializer.Deserialize <BillSettings>(data.Data); if (!settings.AutoUpdatePeriod.HasValue || string.IsNullOrWhiteSpace(settings.SourceUrl)) { return; } var nextRunTime = _previousTime.Get().Add(settings.AutoUpdatePeriod.Value); if (nextRunTime > DateTimeProvider.Now) { return; } settings.EuroToRuble = _courseSource.GetEuroToRuble(settings.SourceUrl); data.Data = _serializer.Serialize(settings); Update(data); _previousTime.Set(DateTimeProvider.Now); }
public decimal GetEuroToRuble(string url) { try { return(_courseSource.GetEuroToRuble(url)); } catch (Exception e) { if (!string.IsNullOrWhiteSpace(_supportEmail)) { var body = "Не удалось обновить курс евро из " + url + Environment.NewLine + e; var message = new EmailMessage( "Tracker. Ошибка обновления курса", body, _fromEmail, _supportEmail, null); _sender.Send(message); } throw; } }