Windows phone 7 如何更新Windows Phone上ScheduledActionService中的现有报警?

Windows phone 7 如何更新Windows Phone上ScheduledActionService中的现有报警?,windows-phone-7,windows-phone-7.1,alarm,scheduledactionservice,Windows Phone 7,Windows Phone 7.1,Alarm,Scheduledactionservice,在我的应用程序中,我有一个警报,计划在上午8:00开始(BeginTime)。我面临的问题是,我不确定更新其BeginTime的最合适方法是什么 我试图在ScheduledActionService中找到报警,然后从那里进行更新。不幸的是,它似乎不起作用,报警从未被触发 var schedule = ScheduledActionService.Find(alarmModel.Name); if (schedule != null) {

在我的应用程序中,我有一个
警报
,计划在上午8:00开始(
BeginTime
)。我面临的问题是,我不确定更新其
BeginTime
的最合适方法是什么

我试图在
ScheduledActionService
中找到
报警
,然后从那里进行更新。不幸的是,它似乎不起作用,
报警
从未被触发

        var schedule = ScheduledActionService.Find(alarmModel.Name);

        if (schedule != null)
        {
            var alarm = (Alarm)schedule;

            if (alarm.BeginTime != alarmModel.BeginTime)
            {
                alarm.BeginTime = alarmModel.BeginTime;
            }
        }
如果我从ScheduledActionService中删除它,然后添加一个新的,那么它就工作了

但这看起来很难看。。。这是我“更新”报警的唯一方法吗

谢谢


Xin

不。正确的方法必须是调用()。


添加一个名为Update的扩展方法来查找和删除?不久前,当我使用ScheduledActionService时,我只是让我的代码查找并删除。@willmel是的,这就是我正在做的atm,它会工作,但我不喜欢你必须删除它并添加一个新的想法…是的,这有点不理想-但是嘿,这就是扩展方法和抽象的好处!编写一次代码,以后再也不处理它了。实际上,我以前试过
Replace
功能,但它不起作用。我认为这是一个错误。看这篇文章,对我来说,用另一个对象替换整个对象似乎不是一个优雅的解决方案。这篇文章的作者想说的是,函数并不依赖于MSDN声明的名称。相反,该方法基于一个名为“muid”的Guid。不过,你可以用它来更新你的开始时间。好了,现在我明白了。谢谢你。
   var schedule = ScheduledActionService.Find(alarmModel.Name);

    if (schedule != null)
    {
        var alarm = (Alarm)schedule;

        if (alarm.BeginTime != alarmModel.BeginTime)
        {
            alarm.BeginTime = alarmModel.BeginTime;
            ScheduledActionService.Replace(alarm);
        }
    }