特定の時間に複数のトーストを表示する必要がある 1 つのアプリケーション (windows phone 8) を作成しています。そのために、1 つの「ScheduledTaskAgent」プロジェクトを使用します。
protected override void OnInvoke(Microsoft.Phone.Scheduler.ScheduledTask task)
{
ShellToast toast = new ShellToast();
toast.Content = task.Description;
toast.Show();
NotifyComplete();
ScheduledActionService.Remove(task.Name);
}
新しいタスク/トーストを追加するには、次のようにします。
private static void AddToSchedule(DateTime date, string id, Toast toast)
{
PeriodicTask periodicTask = new PeriodicTask(toast.Id);
periodicTask.Description = toast.Title;
ScheduledActionService.Add(periodicTask);
var showIn = date - DateTime.Now;
ScheduledActionService.LaunchForTest(toast.Id, showIn);
}
タスク/トーストを1つ追加すると、機能します。しかし、さらに追加したい場合は、System.InvalidOperationException が 1 つあります。
(つまり、BNS エラー: このタイプの最大数の ScheduledActions が既に追加されています。)
これを変更して、1 つのタスクにトーストを追加できるようにするにはどうすればよいですか。
更新しました :
AddToSchedule() を変更したところ、動作するようになりました。
private static void AddToSchedule(DateTime date, string id, Toast toast)
{
Reminder reminder = new Reminder(toast.Id);
reminder.Title = toast.Title;
reminder.Content = toast.Title;
reminder.BeginTime = DateTime.Now.AddMinutes(1);
reminder.ExpirationTime = reminder.BeginTime.AddSeconds(5.0);
reminder.RecurrenceType = RecurrenceInterval.None;
ScheduledActionService.Add(reminder);
}
リマインダーの代わりにトーストを使用する方法はありますか?