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 по-прежнему работают нормально.