コード例 #1
0
        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.");
                }
            }
        }