private void OnTimedEvent(Object source, ElapsedEventArgs e) { Canvas2.Dispatcher.Invoke(() => { if (DateTime.Now - lastWeatherCall > TimeSpan.FromMinutes(5)) { weather.Update().Wait(); lastWeatherCall = DateTime.Now; } Canvas2.percentages[0] = 1 - storage.GetPercentFree() / 100.0; Canvas2.percentages[1] = 1 - processor.GetUtilizationPercent() / 100.0; Canvas2.percentages[2] = 1 - memory.GetUtilizationPercent() / 100.0; Canvas2.percentages[3] = battery.GetBatteryPercentage() / 100.0; Canvas2.temperature = Math.Round((weather.temperature * 9 / 5.0) + 32); Canvas2.pressure = Math.Round(weather.pressure); Canvas2.humidity = Math.Round(weather.humidity); Canvas2.InvalidateVisual(); }); }