Windows通用应用中的任务调度

在Windows通用应用中,任务调度功能允许开发者在后台执行任务,无需用户交互。这对于需要定时更新数据或执行其他后台操作的应用来说非常有用。本文将介绍如何在Windows通用应用中创建和注册后台任务,并实现相应的代码逻辑。

步骤1:配置项目以支持后台任务

假设已经创建了一个Windows通用应用项目,接下来将讨论如何在该项目中添加任务调度功能。首先,需要创建一个新的“Windows运行时组件”项目模板。在Visual Studio IDE中,右键点击项目解决方案或应用文件夹,选择“添加”->“新建项目”。在打开的“添加新项目”对话框中,选择“已安装”->“Visual C#”(或使用的编程语言类型)->“商店应用”->“通用应用”,然后在右侧面板中选择“Windows运行时组件(通用应用的便携式)”项目模板。给它起一个有意义的名字,例如“BackgroundTasks”,然后按回车键。

这样就会在应用程序解决方案中创建一个新项目。由于它是一个便携式类库,可以在Windows和Windows Phone应用中作为引用使用。在项目中,会看到一个默认的类名为“Class1”。将其重命名为一个有意义的名字,例如将重命名为“TileUpdateTask.cs”。

接下来,在主项目中添加便携式类库引用。这可以是Windows项目、Windows Phone项目或两者都有。完成这些步骤后,需要在应用程序中添加一个声明,以便它可以识别后台任务。一旦添加了这个声明,应用即使在提交后也能运行应用代码。

请记住,后台任务适用于需要与用户无交互的小工作项。此外,如果应用或游戏中需要运行多个后台任务,可以在Package.appxmanifest XML文件中添加多个声明。

步骤2:注册后台任务

接下来,需要在手机中注册后台任务。打开xaml.cs页面,希望在那里注册。覆盖OnNavigatedTo方法并注册后台任务。

以下是注册后台任务作为应用/游戏的一部分的典型代码片段。在注册任务之前,需要调用BackgroundExecutionManager.RequestAccessAsync()。在Windows上,此方法会向用户显示一个对话框,请求将应用添加到锁屏。但在Windows Phone上,它有点不同。这里它不会提示用户,但必须在注册任何后台任务之前调用此方法。

最后,创建一个BackgroundTaskBuilder类的实例,为其设置一个可识别的名称,将入口点设置为在Package.appxmanifest文件的声明页面中添加的完全限定类名。为在声明页面中指定的任务设置触发器。在例子中,选择了“Timer”,因此将在这里创建一个TimeTrigger,其值超过15分钟。请记住,TimeTrigger的值必须大于或等于15分钟。如果指定的时间少于15分钟,它将在运行时抛出异常。现在调用BackgroundTaskBuilder对象上的Register()方法来注册它。

步骤3:实现后台任务

最后,需要实现后台任务。打开代码文件(在例子中,它是TileUpdateTask.cs在门户类库项目中)并实现IBackgroundTask接口,该接口定义了一个名为“Run”的方法。

在run方法中,调用传递给Run方法的后台任务实例上的GetDeferral()。然后编写代码,并在最后调用deferal.Complete()。这将确保应用程序即使在调用任何异步方法时也会运行。

在Package.appxmanifest文件中为每个后台任务创建声明。

在注册任何后台任务之前调用BackgroundExecutionManager.RequestAccessAsync()方法。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485