为UWP定义BackgroundTask的入口点

时间:2016-06-17 08:23:14

标签: c# .net windows uwp background-task

我想知道如何在清单文件的EntryPoint中声明要作为后台任务执行的代码的位置。

我的代码设置在名为" Models"的文件夹中。在项目内部,但我不知道如何使用此代码。 在这里你有一张照片:

enter image description here

以防万一,这是我在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();
    }


}

谢谢!

1 个答案:

答案 0 :(得分:2)

据我所知,您在清单文件中声明后台任务时遇到问题。基于此,我的答案。

  1. 您需要创建一个包含后台任务的新项目。为了在以后正确debug them,这是必要的。
  2. 在您的应用程序中引用该项目。
  3. 通过实施IBackgroundTask界面来创建任务。
  4. 通过代码注册。
  5. 在清单上注册。
  6. 在第5步,入口点始终是{project namespace}.{background task name},因此,例如,如果您创建了一个带有任务BackgroundTasks的项目名称ExampleTask,则入口点将为:{ {1}}

    我将留下以后参考guidelinestutorial on how to implement them的链接。