gpt4 book ai didi

windows-phone-7 - ScheduledActionService.Find 抛出 ArgumentException

转载 作者:行者123 更新时间:2023-12-04 21:48:13 25 4
gpt4 key购买 nike

我在市场中部署了一个 Windows Phone 7 应用程序,它通过 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 方法的 name 参数来自 private const string所以每次调用的值都相同。
我应该捕获这个异常并假设后台代理不存在还是表明代理有问题?
在这个阶段,我无法在模拟器中运行应用程序时重现异常。

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


我试过在每次调用时故意使 ScheduledAgent 崩溃,如下所示:
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();
}
这确实会导致后台任务在两次调用后在模拟器中的设置下关闭。但是,如果我重新打开应用程序调用 ScheduledActionService.Find 工作无一异常(exception)。我还可以删除失败的 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 - “BNS 错误:操作被禁用\r\n”
调用 ScheduledActionService.Find 仍然可以正常工作。

最佳答案

我设法在模拟器和连接到我 PC 的手机上重现了 ArgumentException 和 StackTrace。
步骤是:

  • 在异常处理程序中围绕对 ScheduledActionService.Find(TASK_NAME) 的调用设置断点
  • 在带有调试器的模拟器(或手机)中启动应用程序
  • 使用 pin 菜单项启动 PeriodicTask 后台代理。请注意,在 Debug模式下,我调用 ScheduledActionService.LaunchForTest(TASK_NAME, new TimeSpan(0, 0, 1));添加 PeriodicTask 后立即。
  • 导航到我的应用程序中的子页面。
  • 快速使用后退按钮返回主页面,然后再次退出应用程序。 MainPage 上的 Loaded 事件调用 SetupApplicationBar() ,最终调用 ScheduledActionService.Find()方法。
  • 当应用程序关闭时,将发生异常。

  • Exception Type: ArgumentException

    Message: E_INVALIDARG

    StackTrace:

    at Microsoft.Phone.Scheduler.SystemNotificationInterop.CheckHr(Int32 hr)
    at Microsoft.Phone.Scheduler.SystemNotificationInterop.GetNotificationByID(Guid notificationID)
    at Microsoft.Phone.Scheduler.ScheduledActionService.Find(String name)
    at SolarCalculator.Agents.TaskIsActive()
    at SolarCalculator.MainPage.SetupApplicationBar()
    at SolarCalculator.MainPage.MainPage_Loaded(Object sender, RoutedEventArgs e)
    at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
    at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)


    鉴于应用程序正在关闭,我只是想弄清楚后台代理是否正在运行,我认为捕获异常并从我的 TaskIsActive() 返回 false 是安全的。方法。
    现在我知道来自 ArgumentException 的消息是 E_INVALIDARG 我发现 Setting alarm in Windows Phone 7它描述了在 Application_Exit 事件中调用 ScheduleActionService 时遇到相同的错误。

    关于windows-phone-7 - ScheduledActionService.Find 抛出 ArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510152/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com