我刚刚从https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9下载了示例,并尝试运行windows phone 8.1项目。程序会运行,但即使我进行了更改以触发事件,也没有后台任务发生。我也不认为它被注册为后台任务运行,因为我没有收到任何请求,以添加应用程序到锁屏。而且我无法手动将应用程序添加到锁屏。注:使用Lumia 730和8.1 Denim。
我还尝试用silverlight 8.1编写了一个示例程序,并将后台作为RT组件。
if (BackgroundTaskRegistration.AllTasks.Any(task => task.Value.Name == name))
{
// One register it once
return;
}
var builder = new BackgroundTaskBuilder();
var trigger = new SystemTrigger(SystemTriggerType.UserAway, false);
builder.Name = name;
builder.TaskEntryPoint = typeof(MyBackgroundTask.BackClass).FullName; builder.SetTrigger(trigger);
await BackgroundExecutionManager.RequestAccessAsync();
BackgroundTaskRegistration registration = builder.Register();
registration.Completed += RegistrationOnCompleted;在这里,我也收到了一个异常
BackgroundTaskRegistration registration = builder.Register();例外是运行时,它声明
> A first chance exception of type 'System.Exception' occurred in
> Project1.DLL发布于 2015-03-11 20:53:19
我找到了这个问题的解决方案:
生成运行时Windows Phone 8.1项目

在您的后台任务项目中注册任务时的
公共异步静态无效寄存器(){Debug.WriteLine(“注册geofence bg任务”);if (!IsTaskRegistered()) { var LocationTrigger(LocationTriggerType.Geofence));=等待类型var builder =新类型();builder.Name = TaskName;builder.TaskEntryPoint =LocationTrigger(LocationTriggerType.Geofence));(BackgroundTask.YourTaskName).FullName;builder.SetTrigger(新类型尝试{ builder.Register();Debug.WriteLine("GeoFence任务已注册“);} catch (Exception ex) { Debug.WriteLine("GeoFence任务失败:”+ ex.Message.ToString());}} else {} }
确保通过将其引用到后台项目名称来正确添加TaskEntryPoint,它看起来像这样:"BackgroundTask.YourTaskName“
builder.Name参数的
静态字符串TaskName = "BackgroundTask.YourTaskName";

在这里再次输入EntryPoint(类似于TaskEntryPoint):"BackgroundTask.YourTaskName“
BackgroundTask.YourTaskName.Register();
这一切都是关于任务的入口点。因此,如果您的任务位于单独的项目下,则必须输入该项目的名称和该项目下的后台任务类的名称。
不要只对EntryPoint使用后台任务类名称,必须使用包含该类的项目名称来引用它。
希望能有所帮助,
发布于 2015-02-12 14:35:50
您没有提到异常是什么,也没有提到伴随它的文本是什么。这使得它很难回答。
然而,假设你的错误是“类未注册”,你需要做几件事:
MyBackgroundTask.BackClass是Windows运行时组件项目中的一个类(它不能在您的Silverlight项目中)发布于 2015-02-21 22:45:37
我尝试在我的后台任务中添加BackgroundTaskDeferral,它开始工作了。我想知道为什么,因为这只是一个异步呼叫。无论如何,它对我来说是有效的。谢谢你的帮助
https://stackoverflow.com/questions/28467496
复制相似问题