private async Task TimerCommandsBackground() { int timerCommandIndex = 0; await BackgroundTaskWrapper.RunBackgroundTask(this.backgroundThreadCancellationTokenSource, async (tokenSource) => { DateTimeOffset startTime = DateTimeOffset.Now; int startMessageCount = this.Messages.Count; tokenSource.Token.ThrowIfCancellationRequested(); await Task.Delay(1000 * 60 * ChannelSession.Settings.TimerCommandsInterval); tokenSource.Token.ThrowIfCancellationRequested(); if (ChannelSession.Settings.TimerCommands.Count > 0) { TimerCommand command = ChannelSession.Settings.TimerCommands[timerCommandIndex]; while ((this.Messages.Count - startMessageCount) < ChannelSession.Settings.TimerCommandsMinimumMessages) { tokenSource.Token.ThrowIfCancellationRequested(); await Task.Delay(1000 * 10); } await command.Perform(); timerCommandIndex++; timerCommandIndex = timerCommandIndex % ChannelSession.Settings.TimerCommands.Count; } }); }
private async Task TimerCommandsBackground() { int timerCommandIndex = 0; await BackgroundTaskWrapper.RunBackgroundTask(this.backgroundThreadCancellationTokenSource, async (tokenSource) => { DateTimeOffset startTime = DateTimeOffset.Now; int startMessageCount = this.Messages.Count; tokenSource.Token.ThrowIfCancellationRequested(); await Task.Delay(1000 * 60 * ChannelSession.Settings.TimerCommandsInterval); tokenSource.Token.ThrowIfCancellationRequested(); IEnumerable <TimerCommand> timers = ChannelSession.Settings.TimerCommands.Where(c => c.IsEnabled); if (timers.Count() > 0) { timerCommandIndex = timerCommandIndex % timers.Count(); TimerCommand command = timers.ElementAt(timerCommandIndex); while ((this.Messages.Count - startMessageCount) < ChannelSession.Settings.TimerCommandsMinimumMessages) { tokenSource.Token.ThrowIfCancellationRequested(); await Task.Delay(1000 * 10); } await command.Perform(); timerCommandIndex++; } }); }