ScheduledActionService.Find lança ArgumentException

Eu tenho um aplicativo do Windows Phone 7 implantado no mercado que atualiza seu Live Tile através de um agente de plano de fundo do PeriodicTask.

Um usuário está relatando problemas com o bloco que não está mais sendo atualizado depois de estar funcionando há algum tempo.

Quando eles verificam as tarefas em segundo plano no telefone, ele é desativado e a caixa de seleção "Ativar novamente as tarefas em segundo plano para este aplicativo na próxima vez que eu abri-lo" está marcada.

Depois de abrir o aplicativo e tentar a operação de pin novamente, a tarefa em segundo plano não foi retomada.

Suspeito que isso possa estar relacionado a dois relatórios de problemas que vi no App Hub:

Função do Problema: Microsoft.Phone.Scheduler.SystemNotificationInterop.CheckHr

Tipo de exceção: ArgumentException

Rastreamento de pilha:

Deslocamento de função de imagem de quadro
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

Chamadas para Microsoft.Phone.Scheduler.ScheduledActionService.Find estão resultando em um ArgumentException.

O parâmetro de nome para o qual estou chamando o método Find está vindo de umprivate const string então o valor será o mesmo em cada chamada.

Devo pegar essa exceção e assumir que o agente de segundo plano não está presente ou está indicando que algo está errado com o agente?

Neste estágio, não consigo reproduzir a exceção ao executar o aplicativo no emulador.

"Quando o agente de segundo plano trava duas vezes em seqüência, ele é removido do agendamento"

Eu tentei deliberadamente travar o ScheduledAgent em todas as invocações da seguinte forma:

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

Isso faz com que a tarefa em segundo plano seja desativada nas configurações no emulador após duas chamadas. No entanto, se eu reabrir as chamadas do aplicativo para ScheduledActionService.Find trabalhar sem uma exceção. Também posso remover a PeriodicTask com falha e adicionar uma nova instância sem problemas.

"uma exceção pode ser lançada quando o agente de segundo plano é desativado nas configurações do telefone. Acho que, nesse caso, a exceção é lançada em ScheduledActionService.Add, não ScheduledActionService.Find"

Eu tentei isso no emulador. Eu recebo a seguinte exceção deScheduledActionService.Add(task);:

System.InvalidOperationException - "Erro BNS: A ação está desativada \ r \ n"

Chamadas para ScheduledActionService.Find ainda funcionam bem.

questionAnswers(1)

yourAnswerToTheQuestion