Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 什么可以防止ScheduledTaskAgent在意外情况下多次开火?_Windows Phone 8_Background Agents - Fatal编程技术网

Windows phone 8 什么可以防止ScheduledTaskAgent在意外情况下多次开火?

Windows phone 8 什么可以防止ScheduledTaskAgent在意外情况下多次开火?,windows-phone-8,background-agents,Windows Phone 8,Background Agents,我已经设置了一个调度的taskagent和一个启动fortest(我知道它正在被调用)。当我启动主应用程序时,它似乎成功地添加了任务,并且OnInvoke运行完成(调用NotifyComplete),但似乎再也不会运行了。我已经减少了OnInvoke的功能,除了调用NotifyComplete之外,什么也不做,但是它仍然只在ScheduledActionService.Add和ScheduledActionService.LaunchForTest之后运行一次(延迟几秒钟) 什么会阻止它多次运行

我已经设置了一个调度的taskagent和一个启动fortest(我知道它正在被调用)。当我启动主应用程序时,它似乎成功地添加了任务,并且OnInvoke运行完成(调用NotifyComplete),但似乎再也不会运行了。我已经减少了OnInvoke的功能,除了调用NotifyComplete之外,什么也不做,但是它仍然只在ScheduledActionService.AddScheduledActionService.LaunchForTest之后运行一次(延迟几秒钟)

什么会阻止它多次运行?

我假设它是关于PeriodicTask的

你说得对。它将只运行一次,这是因为LaunchForTest调用指定了timespan。执行之后,您必须再等待30分钟,它才能运行


是否在App.xaml.cs中添加ScheduledActionService.Add?我是说,在发布会上?你应该。如果你有,那么你可以再次运行该应用程序,它将调用任务代理。

如果你碰到断点,即使是一次,这意味着你已正确设置。您必须记住,
ScheduledActionService.LaunchForTest
只是一个可以在调试器下调用的函数。当应用程序发布时,它将不起作用

基本上,没有办法启动后台代理,您可以注册它,然后忘记它。Windows Phone操作系统将定期调用它


如果要多次调试周期性任务,则可以将
LaunchForTest
放入延迟循环中

发现问题:要使计划的代理在较短的时间内重复(用于测试),
#如果调试ScheduledActionService.LaunchForTest(task.Name,TimeSpan.FromSeconds(30))#endif
必须同时位于应用程序启动(例如应用程序构造函数)和代理OnInvoke中。仅仅在应用程序发布中使用它是不够的。