适用于windows 10的通用应用程序.如何触发后台任务

本文关键字:应用程序 何触发 后台任务 windows 适用于 | 更新日期: 2023-09-27 18:23:46

我需要通过按下操作按钮从交互式toast通知中触发后台任务。我不知道我做错了什么。我可以注册一个任务并在visualstudio中看到它。即使我可以调试它(调试器跳到MyToastNotificationBackgroundTask.Run函数,但参数IBackgroundTaskInstance taskInstance是空对象),点击按钮永远不会运行任务,或者至少调试器不会显示它。

我正在注册一个类似的后台任务

var builder = new BackgroundTaskBuilder();
builder.Name = "MyToastNotificationBackgroundTask";
builder.TaskEntryPoint = "Tasks.MyToastNotificationBackgroundTask";
builder.SetTrigger(new ToastNotificationActionTrigger());
BackgroundTaskRegistration task = builder.Register();

显示通知

ToastNotifier toastNotifier = ToastNotificationManager.CreateToastNotifier();
ScheduledToastNotification myToastNotificaton = new ScheduledToastNotification(this.myToastXml, DateTime.Now.AddMinutes(1), TimeSpan.FromMinutes(60), 2);
myToastNotificaton .Id = "toast_54ahk36s";
toastNotifier.AddToSchedule(myToastNotificaton);

应用内清单

<Extensions>
    <Extension Category="windows.backgroundTasks" EntryPoint="Tasks.MyToastNotificationBackgroundTask">
      <BackgroundTasks>
        <Task Type="systemEvent" />
      </BackgroundTasks>
    </Extension>
</Extensions>

在toast模板中,xml操作按钮是

<actions>
    <input id="message" type="text" placeholderContent="200" />
    <action activationType="background" content="Count" arguments="count" />
</actions>

的后台任务

namespace Tasks
{
    public sealed class MyToastNotificationBackgroundTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;
            ...
        }
    }
}

我不明白在通知模板操作按钮上指定activationtype="background"与MyToastNotificationBackgroundTask任务有什么关系?我找不到这方面的相关信息。

有人请分享你的知识。也许你有一个工作示例或smf。任何帮助都将不胜感激。提前谢谢。

适用于windows 10的通用应用程序.如何触发后台任务

我不明白如何在通知模板操作按钮与MyToastNotificationBackgroundTask任务?我在上找不到相关信息那个

后台任务的触发器类型(ToastNotificationActionTrigger)将Toast操作连接到后台任务。当用户点击该操作时,应用程序会查找带有ToastNotificationActionTrigger触发器的后台任务,如果找到,就会运行。

我使用了你的代码,但无法重现问题,触发器工作正常。我的猜测是,您已经使用该名称注册了一个任务,但没有正确的触发器类型(请先尝试注销),或者您在toast xml(activationType字段)中存在拼写问题。

相关文章: