Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Silverlight 8.1应用程序中注册后台任务_C#_Silverlight_Windows Phone 8.1 - Fatal编程技术网

C# 在Silverlight 8.1应用程序中注册后台任务

C# 在Silverlight 8.1应用程序中注册后台任务,c#,silverlight,windows-phone-8.1,C#,Silverlight,Windows Phone 8.1,我正在开发一个使用BLE与项目通信的应用程序,我需要从中接收后台通知。我知道存在GattCharacteristicNotificationTrigger,但我找不到任何方法在Silverlight 8.1应用程序中注册后台任务 有什么窍门吗?注册a的解释很好 下面是一个简单的示例,它展示了一个Toast,步骤如下(适用于运行时和Silverlight应用程序): 一,。BackgroundTask必须是Windows运行时组件网(无论您的应用程序是运行时还是Silverlight)。要添加新的

我正在开发一个使用BLE与项目通信的应用程序,我需要从中接收后台通知。我知道存在
GattCharacteristicNotificationTrigger
,但我找不到任何方法在Silverlight 8.1应用程序中注册后台任务

有什么窍门吗?

注册a的解释很好

下面是一个简单的示例,它展示了一个Toast,步骤如下(适用于运行时和Silverlight应用程序):

一,。BackgroundTask必须是Windows运行时组件网(无论您的应用程序是运行时还是Silverlight)。要添加新的解决方案,请在VS的“解决方案资源管理器”窗口中右键单击解决方案,选择“添加”,然后选择“新建项目”,然后选择“Windows运行时组件”

二,。在主项目中添加引用

三,。在Package.appxmanifest文件中指定声明-您需要添加Backgorund任务、标记计时器并指定任务的入口点。入口点将是一个
名称空间。yourTaskClass
(它实现了
IBackgroundTask
)-添加的Windows运行时组件

四,。你的背景任务看起来怎么样比如说,我们想为它干杯(当然,它可以是许多其他的东西):

五,。最后,让我们进入主项目:

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分钟之间启动)。但是如何更快地调试任务呢

有一种简单的方法-转到“调试位置”工具栏,您将看到一个下拉列表“生命周期事件”,从中选择您的任务,它将启动(有时打开/关闭下拉列表以刷新它)


我的示例代码-WP8.1 Silverlight应用程序。

感谢您的回复,但我已经尝试过了,RT中的相同代码和Silverlight中的相同代码会在任务触发(并且未执行)时使应用程序崩溃@Felaamaghino您是否遵循了这些步骤?我已经添加了一个-也许它会有帮助。现在尝试了,而且有效,不知道,我将在主项目上重试(我昨晚尝试了,我很困:P),谢谢:)回答很好,喜欢图片。@Romasz有用的帖子,但除了这个主题之外还有一个问题。如何处理取消的后台任务?如果在Windows Phone 8.1中允许应用程序在电池节电模式下停止。我需要检测后台任务何时被取消,以便调用另一个函数。我已经在我的项目中完成并实现了后台任务,但我仍然无法检测后台任务是否被取消?你能帮我吗。?
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();
}