ScheduledActionService.Find lanza ArgumentException

Tengo una aplicación de Windows Phone 7 implementada en el mercado que actualiza su Live Tile a través de un agente de fondo de PeriodicTask.

Un usuario informa de problemas con el mosaico que ya no se actualiza después de haber estado trabajando durante algún tiempo.

Cuando verifican las tareas en segundo plano en el teléfono, se desactiva y la casilla "Volver a activar las tareas en segundo plano para esta aplicación la próxima vez que lo abra" está marcada.

Después de abrir la aplicación y volver a intentar la operación de pin, la tarea de fondo no se ha reanudado.

Sospecho que esto puede estar relacionado con dos informes de fallos que he visto en App Hub:

Función de problema: Microsoft.Phone.Scheduler.SystemNotificationInterop.CheckHr

Tipo de excepción: ArgumentException

Traza de la pila:

Desplazamiento de la función de imagen del marco
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

Las llamadas a Microsoft.Phone.Scheduler.ScheduledActionService.Find están resultando en una ArgumentException.

El parámetro de nombre con el que estoy llamando al método Find proviene de unprivate const string por lo que el valor será el mismo con cada llamada.

¿Debería capturar esta excepción y asumir que el agente de fondo no está presente o está indicando que algo está mal con el agente?

En esta etapa no puedo reproducir la excepción al ejecutar la aplicación en el emulador.

"Cuando [el] Agente de fondo se bloquea dos veces en secuencia, se elimina de la programación"

He intentado bloquear deliberadamente el agente programado en cada invocación de la siguiente manera:

<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>

Esto hace que la tarea en segundo plano se desactive bajo la configuración en el emulador después de dos invocaciones. Sin embargo, si vuelvo a abrir las llamadas de la aplicación a ScheduledActionService.Find funciona sin una excepción. También puedo eliminar la PeriodicTask fallida y agregar una nueva instancia sin problema.

"se puede lanzar una excepción cuando el agente en segundo plano está desactivado en la configuración del teléfono. Creo que en ese caso la excepción se lanza en ScheduledActionService.Add, no ScheduledActionService.Find"

Intenté esto en el emulador. Obtengo la siguiente excepción deScheduledActionService.Add(task);:

System.InvalidOperationException - "Error BNS: la acción está deshabilitada \ r \ n"

Las llamadas a ScheduledActionService.Find todavía funcionan bien.

Respuestas a la pregunta(1)

Su respuesta a la pregunta