我刚刚从https://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9下载示例
并尝试运行Windows Phone 8.1项目。该程序可以运行,但是即使我进行了更改以触发事件,也没有后台任务发生。我也认为它没有注册为后台任务,因为我没有收到任何将应用添加到“锁定”屏幕的请求。而且我无法手动将应用添加到锁定屏幕。
注意:将Lumia 730与8.1牛仔布一起使用。
我还尝试用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
最佳答案
我找到了此问题的解决方案:
使运行时Windows Phone 8.1 Project成为后台任务
在后台任务项目中注册Task时:
public async static void Register()
{
Debug.WriteLine("Registering geofence bg task");
if (!IsTaskRegistered())
{
var result = await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
builder.Name = TaskName;
builder.TaskEntryPoint = typeof(BackgroundTask.YourTaskName).FullName;
builder.SetTrigger(new LocationTrigger(LocationTriggerType.Geofence));
try
{
builder.Register();
Debug.WriteLine("GeoFence Task Registered");
}
catch (Exception ex)
{
Debug.WriteLine("GeoFence Task Failed : " + ex.Message.ToString());
}
}
else { }
}
确保通过引用背景项目名称正确添加TaskEntryPoint,它看起来像这样:“ BackgroundTask.YourTaskName”
builder.Name参数的TaskName字符串应如下所示:
静态字符串TaskName =“ BackgroundTask.YourTaskName”;
在“声明”选项卡下的appmanifest中声明您的TaskEntryPoint,在这里我使用GeofenceTask,所以我选中了任务所需的几个复选框:
在这里再次输入EntryPoint(如TaskEntryPoint):“ BackgroundTask.YourTaskName”
当您在应用中某个地方初始化任务时,可以使用:
BackgroundTask.YourTaskName.Register();
都是关于任务的切入点。因此,如果像完成任务那样将任务放在单独的项目下,则必须输入该项目的名称以及其下的后台任务类的名称。
不要仅对EntryPoint仅使用后台任务类名称,而必须使用包含该类的项目名称来引用它。
希望能帮助到你,
关于c# - Windows Phone 8.1后台任务无法注册后台任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28467496/