在Silverlight 8.1应用程序中注册后台任务
我正在使用BLE与项目进行通信的应用程序,我需要从中接收后台通知。 我知道GattCharacteristicNotificationTrigger
的存在,但我找不到在Silverlight 8.1应用程序中注册后台任务的方法。
任何小费?
注册一个BackgroundTask 在这里很好地解释在MSDN 。
这里是一个简单的例子,在TimeTrigger上触发,并显示一个Toast,这些步骤(适用于RunTime和Silverlight应用程序):
- 1. BackgroungTask必须是Windows运行时间库(无论您的应用程序是运行时还是Silverlight)。 要添加一个新的,在VS的解决scheme资源pipe理器窗口中右击你的解决scheme ,select添加,然后select新build项目 ,然后selectWindows运行时组件 。
- 2.在主项目中添加一个参考。
- 3.在Package.appxmanifest文件中指定声明 – 您需要添加一个Backgorund任务 ,标记Timer并为Task指定Entry Point 。 入口点将是一个
Namespace.yourTaskClass
(它实现IBackgroundTask
) – 添加的Windows运行时组件。 - 4.你的BackgroundTask怎么样? – 比方说,我们想从它发送一个吐司(当然,它可以是许多其他的东西):
namespace myTask // the Namespace of my task { public sealed class FirstTask : IBackgroundTask // sealed - important { public void Run(IBackgroundTaskInstance taskInstance) { // simple example with a Toast, to enable this go to manifest file // and mark App as TastCapable - it won't work without this // The Task will start but there will be no Toast. ToastTemplateType toastTemplate = ToastTemplateType.ToastText02; XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); XmlNodeList textElements = toastXml.GetElementsByTagName("text"); textElements[0].AppendChild(toastXml.CreateTextNode("My first Task")); textElements[1].AppendChild(toastXml.CreateTextNode("I'm message from your background task!")); ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastXml)); } } }
- 5.最后,让我们在主项目中注册我们的BackgroundTask :
private async void Button_Click(object sender, RoutedEventArgs e) { // Windows Phone app must call this to use trigger types (see MSDN) await BackgroundExecutionManager.RequestAccessAsync(); BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder { Name = "First Task", TaskEntryPoint = "myTask.FirstTask" }; taskBuilder.SetTrigger(new TimeTrigger(15, true)); BackgroundTaskRegistration myFirstTask = taskBuilder.Register(); }
编译,运行,它应该工作。 正如你所看到的,任务应该在15分钟后开始(这个时间会随着操作系统在特定时间间隔内安排任务而变化,所以它会在15-30分钟之间激发)。 但如何更快地debugging任务?
有一个简单的方法 – 去debugging位置工具栏,你会看到一个下拉的生命周期事件 ,从中select你的任务,它会触发(有时打开/closures下拉刷新它)。
在这里你可以下载我的示例代码 – WP8.1 Silverlight应用程序。