我想知道如何在清单文件的EntryPoint中声明要作为后台任务执行的代码的位置。
我的代码设置在名为" Models"的文件夹中。在项目内部,但我不知道如何使用此代码。 在这里你有一张照片:
以防万一,这是我在cs中的代码:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.ApplicationModel.Background;
using Windows.UI.Popups;
namespace Universal_in_C.Models
{
public sealed class ExampleBackgroundTask : IBackgroundTask
{
public async Task ExampleMethodAsync()
{
Debug.WriteLine("Done Exe");
var dialog = new MessageDialog("TESTING, TESTING LIKE THERE IS NO TOMORROW.");
await dialog.ShowAsync();
}
public async void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
await ExampleMethodAsync();
_deferral.Complete();
}
}
}
我如何称呼它(我知道我也需要在这里更改条目);
private void button6_Click(object sender, RoutedEventArgs e)
{
var taskRegistered = false;
var exampleTaskName = "BackgroundTask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == exampleTaskName)
{
taskRegistered = true;
break;
}
}
if (taskRegistered)
{
Debug.WriteLine("Already Exist");
}
else
{
var builder = new BackgroundTaskBuilder();
Debug.WriteLine("Started to Exist");
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "exampleTaskName";
builder.SetTrigger(new SystemTrigger(SystemTriggerType.InternetAvailable, true));
builder.AddCondition(new SystemCondition(SystemConditionType.UserPresent));
builder.Register();
}
}
谢谢!
答案 0 :(得分:2)
据我所知,您在清单文件中声明后台任务时遇到问题。基于此,我的答案。
在第5步,入口点始终是{project namespace}.{background task name}
,因此,例如,如果您创建了一个带有任务BackgroundTasks
的项目名称ExampleTask
,则入口点将为:{ {1}}
我将留下以后参考guidelines和tutorial on how to implement them的链接。