已经运行的BackgroundTask的进度更新?

时间:2012-05-11 10:02:16

标签: c# windows-8 windows-runtime

主应用程序如何从主应用程序启动时已经运行的后台任务获取进度通知? 我已经注册了一个由SystemTriggerType.TimeZoneChange触发的后台任务(为简单起见)。这是代码:

public sealed class Class1:IBackgroundTask
{
    public async void Run(IBackgroundTaskInstance taskInstance)
    {
        var defferal = taskInstance.GetDeferral();
        await Task.Delay(3000);
        for (uint i = 1; i < 100; i++)
        {
            await Task.Delay(1000);
            taskInstance.Progress = i;
        }
        defferal.Complete();
    }
}

在进度条中正确报告进度。 在应用程序开始时,我重新执行Completed和Progress事件

foreach (var i in BackgroundTaskRegistration.AllTasks)
{
   i.Value.Completed += task_Completed;
   i.Value.Progress += task_Progress;
}

但我想如果任务已在运行,则不会更新taskInstance ...

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

看看background task sample。它完全符合您的尝试,并且正在更新。