【问题标题】:Define Entry Point of a BackgroundTask for UWP为 UWP 定义 BackgroundTask 的入口点
【发布时间】:2016-10-18 23:55:30
【问题描述】:

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

我将代码设置在项目内名为“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();
    }


}

谢谢!

【问题讨论】:

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


【解决方案1】:

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

  1. 您需要创建一个包含后台任务的新项目。为了以后正确地debug them,这是必要的。
  2. 在您的应用程序中引用该项目。
  3. 通过实现IBackgroundTask 接口来创建任务。
  4. 通过代码注册。
  5. 在清单上注册。

在第 5 步,入口点始终是 {project namespace}.{background task name},因此例如,如果您使用任务 ExampleTask 创建了一个项目名称 BackgroundTasks,入口点将是:BackgroundTasks.ExampleTask

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多