private async Task GetWeatherInfo(ForecastDevice device, CancellationToken cancellationToken) { var latitude = (float)device.Latitude; var longitude = (float)device.Longitude; ForecastIOResponse response; try { var request = new ForecastIORequest(_apiKey, latitude, longitude, Unit.si); response = _policy.Execute(() => request.Get()); } catch (WebException) { return; } catch (Exception e) { _log.Error(e.Message, e); return; } UpdateVariables(device.Id, string.Empty, response.currently); for (var hour = 0; hour < response.hourly.data.Count; hour++) { var data = response.hourly.data[hour]; UpdateVariables(device.Id, $"H+{hour}_", data); } for (var day = 0; day < response.daily.data.Count; day++) { var data = response.daily.data[day]; UpdateVariables(device.Id, $"D+{day}_", data); } await Task.Delay(TimeSpan.FromSeconds(10), cancellationToken).ContinueWith(_ => { }); }