0

我正在使用 BackgroundUploader 上传视频,即使应用程序处于后台,我也需要在上传完成时显示通知。为此,我在上传成功时使用了 toast 通知,它的工作但仅当应用程序处于前台(活动)时才会显示,否则它会在我通过单击激活应用程序时显示。我认为这是因为应用程序状态暂停。我的代码是-

            if (response.StatusCode == 200)
            {
                ToastTemplateType toastTemplate = ToastTemplateType.ToastText01;
                XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);

                XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
                toastTextElements[0].AppendChild(toastXml.CreateTextNode("Video uploaded"));

                ToastNotification toast = new ToastNotification(toastXml);
                ToastNotificationManager.CreateToastNotifier().Show(toast);

                //some more work here
            }

现在我正在尝试注册在视频上传完成后显示通知和其他一些小东西的后台任务。

在哪里注册后台任务以及我应该使用什么触发器?

或者是否有任何其他可能的解决方案?

更新-

我正在使用休闲代码向后台任务注册定时器触发器

            string name = "UploadSuccess";
            bool registered = false;
            foreach (var task in BackgroundTaskRegistration.AllTasks)
            {
                //task.Value.Unregister(true);
                if (task.Value.Name.Equals(name))
                    registered = true;
            }
            if (registered == false)
            {
                var builder = new BackgroundTaskBuilder();
                builder.Name = name;
                builder.TaskEntryPoint = "VideoUploadSuccessTask.UploadSuccess";
                TimeTrigger t = new TimeTrigger(15, false);
                builder.SetTrigger(t);
                //builder.SetTrigger(new SystemTrigger(SystemTriggerType.ServicingComplete, false));

                var ret = builder.Register();
            }

并且它在调试时工作但从不自动触发:(

4

1 回答 1

0

在 Windows 8 中,在涉及后台任务的情况下,您可以做的最好的事情是 Timer 触发器,但这只能为您提供 15 分钟的分辨率。对于这种情况,这是一个已知的缺陷。

幸运的是,它已在 Windows 8.1 中得到解决,其中 BackgroundTransfer API 允许您配置在传输完成时显示的 toast 通知。请参阅BackgroundUploader.SuccessToastNotificationFailureToastNotification属性。

我在我的免费电子书第二版预览的第 4 章中详细讨论了这一点。

于 2013-09-13T16:22:46.940 回答