Windows 10 IOT 生命周期(或:如何属性 终止后台应用程序)
Windows 10 IOT Lifecycle (or: how to property terminate a background application)
为了在具有 Windows 10 IOT Core 的无头 Raspberry Pi 2 上使用 UWP 应用程序,我们可以使用后台应用程序模板,它基本上创建一个新的 UWP 应用程序,只有一个后台任务在启动时执行:
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="BackgroundApplication1.StartupTask">
<BackgroundTasks>
<iot:Task Type="startup" />
</BackgroundTasks>
</Extension>
</Extensions>
为了保留一个应用程序运行,我们可以使用下面的启动代码:
public void Run( IBackgroundTaskInstance taskInstance )
{
BackgroundTaskDeferral Deferral = taskInstance.GetDeferral();
//Execute arbitrary code here.
}
这样应用程序保持 运行 并且 OS 不会在 IOT 宇宙中的任何超时后终止应用程序。
到目前为止,太棒了。
但是:我希望能够在设备关闭时正确关闭后台应用程序(或应用程序被要求'gently'关闭。
在 'normal' UWP 应用程序中,您可以订阅 OnSuspending 事件。
在这种后台情况下,如何获得有关即将关闭/关闭的通知?
非常感谢帮助。
提前致谢!
-西蒙
您需要处理已取消的活动。如果设备正常关闭,后台任务将被取消。 Windows 如果取消注册,也会取消任务。
BackgroundTaskDeferral _defferal;
public void Run(IBackgroundTaskInstance taskInstance)
{
_defferal = taskInstance.GetDeferral();
taskInstance.Canceled += TaskInstance_Canceled;
}
private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
//a few reasons that you may be interested in.
switch (reason)
{
case BackgroundTaskCancellationReason.Abort:
//app unregistered background task (amoung other reasons).
break;
case BackgroundTaskCancellationReason.Terminating:
//system shutdown
break;
case BackgroundTaskCancellationReason.ConditionLoss:
break;
case BackgroundTaskCancellationReason.SystemPolicy:
break;
}
_defferal.Complete();
}
为了在具有 Windows 10 IOT Core 的无头 Raspberry Pi 2 上使用 UWP 应用程序,我们可以使用后台应用程序模板,它基本上创建一个新的 UWP 应用程序,只有一个后台任务在启动时执行:
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="BackgroundApplication1.StartupTask">
<BackgroundTasks>
<iot:Task Type="startup" />
</BackgroundTasks>
</Extension>
</Extensions>
为了保留一个应用程序运行,我们可以使用下面的启动代码:
public void Run( IBackgroundTaskInstance taskInstance )
{
BackgroundTaskDeferral Deferral = taskInstance.GetDeferral();
//Execute arbitrary code here.
}
这样应用程序保持 运行 并且 OS 不会在 IOT 宇宙中的任何超时后终止应用程序。
到目前为止,太棒了。
但是:我希望能够在设备关闭时正确关闭后台应用程序(或应用程序被要求'gently'关闭。
在 'normal' UWP 应用程序中,您可以订阅 OnSuspending 事件。
在这种后台情况下,如何获得有关即将关闭/关闭的通知?
非常感谢帮助。
提前致谢!
-西蒙
您需要处理已取消的活动。如果设备正常关闭,后台任务将被取消。 Windows 如果取消注册,也会取消任务。
BackgroundTaskDeferral _defferal;
public void Run(IBackgroundTaskInstance taskInstance)
{
_defferal = taskInstance.GetDeferral();
taskInstance.Canceled += TaskInstance_Canceled;
}
private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
//a few reasons that you may be interested in.
switch (reason)
{
case BackgroundTaskCancellationReason.Abort:
//app unregistered background task (amoung other reasons).
break;
case BackgroundTaskCancellationReason.Terminating:
//system shutdown
break;
case BackgroundTaskCancellationReason.ConditionLoss:
break;
case BackgroundTaskCancellationReason.SystemPolicy:
break;
}
_defferal.Complete();
}