ScheduledActionService.Find создает исключение ArgumentException

У меня есть приложение Windows Phone 7, развернутое на рынке, которое обновляет свою Live Tile с помощью фонового агента PeriodicTask.

Один пользователь сообщает о проблемах с плиткой, которая больше не обновляется после того, как она проработала некоторое время.

Когда они проверяют фоновые задачи на телефоне, он отключается и устанавливается флажок «Включить фоновые задачи для этого приложения при следующем его открытии». проверено.

После открытия приложения и повторной попытки закрепления фоновая задача не возобновилась.

Я подозреваю, что это может быть связано с двумя отчетами о сбоях, которые я видел в App Hub:

Problem Function: Microsoft.Phone.Scheduler.SystemNotificationInterop.CheckHr

Exception Type: ArgumentException

Stack Trace:

Frame Image Function Offset
0 coredll.dll xxx_RaiseException 19
1 mscoree3_7.dll WatsonUnhandledManagedException 296
2 mscoree3_7.dll Dbg_NotifyManagedException 93
3 mscoree3_7.dll FirstPassException 1044
4 TransitionStub 0
5 Microsoft.Phone.Scheduler.SystemNotificationInterop.CheckHr 248
6 Microsoft.Phone.Scheduler.SystemNotificationInterop.GetNotificationByID 156
7 Microsoft.Phone.Scheduler.ScheduledActionService.Find 276
8 MyApp.Agents.TaskIsActive 60
9 MyApp.MainPage.SetupApplicationBar 44
10 MyApp.MainPage.MainPage_Loaded 100
11 MS.Internal.CoreInvokeHandler.InvokeEventHandler 3660
12 MS.Internal.JoltHelper.FireEvent 1348
13 mscoree3_7.dll IL_CallManaged 884
14 mscoree3_7.dll IL_CallDelegateInternal 176
15 mscoree3_7.dll makeComPlusCall 5255
16 mscoree3_7.dll makeComPlusCallReturnInt 21
17 0
18 agcore.dll CCoreServices::CLR_FireEvent 385

Вызовы Microsoft.Phone.Scheduler.ScheduledActionService.Find приводят к ArgumentException.

Параметр имени, с которым я вызываю метод Find, исходит изprivate const string поэтому значение будет одинаковым при каждом вызове.

Должен ли я просто поймать это исключение и предположить, что фонового агента нет или он указывает, что с агентом что-то не так?

На этом этапе я не могу воспроизвести исключение при запуске приложения в эмуляторе.

"When [the] Background Agent crashes two times in sequence, it's removed from scheduling"

Я пытался преднамеренно аварийно завершить работу ScheduledAgent при каждом вызове следующим образом:

<code>protected override void OnInvoke(ScheduledTask task)
{
    UpdateTile();

#if DEBUG
    // If we're debugging, fire the task again
    ScheduledActionService.LaunchForTest("MyScheduledTaskAgent", new TimeSpan(0, 0, 30));
    throw new Exception("Bang");
#endif

     NotifyComplete();
}
</code>

Это приводит к отключению фоновой задачи в настройках эмулятора после двух вызовов. Однако, если я снова открою приложение, вызовы ScheduledActionService.Find работают без исключения. Я также могу удалить сбой PeriodicTask и добавить новый экземпляр без проблем.

"an exception can be thrown when the background agent is deactivated in the phone's settings. I think in that case the exception is thrown on ScheduledActionService.Add, not ScheduledActionService.Find"

Я пробовал это в эмуляторе. Я получаю следующее исключение изScheduledActionService.Add(task);:

System.InvalidOperationException - & quot; Ошибка BNS: действие отключено \ r \ n & quot;

Вызовы ScheduledActionService.Find по-прежнему работают нормально.

Ответы на вопрос(1)

Ваш ответ на вопрос