BudgetAnalyser.Engine.Services.DashboardService.ScheduledWidgetUpdate C# (CSharp) Method

ScheduledWidgetUpdate() private method

private ScheduledWidgetUpdate ( Widget widget ) : void
widget BudgetAnalyser.Engine.Widgets.Widget
return void
        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
                });
        }