private async void ScheduledWidgetUpdate(Widget widget)
{
Debug.Assert(widget.RecommendedTimeIntervalUpdate != null);
this.logger.LogInfo(
l => l.Format(
"Scheduling \"{0}\" widget to update every {1} minutes.",
widget.Name,
widget.RecommendedTimeIntervalUpdate.Value.TotalMinutes));
// Run the scheduling on a different thread.
await Task.Run(
async () =>
{
while (true)
{
await Task.Delay(widget.RecommendedTimeIntervalUpdate.Value);
this.logger.LogInfo(
l => l.Format(
"Scheduled Update for \"{0}\" widget. Will run again after {1} minutes.",
widget.Name,
widget.RecommendedTimeIntervalUpdate.Value.TotalMinutes));
UpdateWidget(widget);
}
// ReSharper disable once FunctionNeverReturns - intentional timer tick infinite loop
});
}