public async Task OnPausedAsync() { foreach (KeyValuePair <string, ReminderInfo> kvp in reminders .Where((kvp) => ParticipateInOnPaused(kvp.Value.ReminderState)) .ToList()) // because we will modify the dictionary { switch (kvp.Value.ReminderState) { case ReminderState.RegisterAndSave: kvp.Value.ReminderState = ReminderState.RegisteredButNotSaved; await instance.RegisterOrUpdateReminderAsync(kvp.Key, kvp.Value.DueTime - DateTime.UtcNow); break; case ReminderState.ReregisterAndResave: kvp.Value.ReminderState = ReminderState.RegisteredButNotResaved; await instance.RegisterOrUpdateReminderAsync(kvp.Key, kvp.Value.DueTime - DateTime.UtcNow); break; case ReminderState.Unregister: reminders.Remove(kvp.Key); await instance.UnregisterReminderAsync(kvp.Key); break; //case ReminderState.RegisteredButNotSaved: //case ReminderState.RegisteredButNotResaved: //case ReminderState.RegisteredAndSaved: //case ReminderState.SaveAndUnregister: default: throw new InvalidOperationException($"Reminder '{kvp.Key}' is in state '{kvp.Value.ReminderState}' during OnPaused."); } } }