在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运行时组件

winRTcomponent

    2.在主项目中添加一个参考。

addreference

    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应用程序。