gpt4 book ai didi

c# - Windows 10 物联网生命周期(或 : how to property terminate a background application)

转载 作者:太空狗 更新时间:2023-10-29 18:28:56 24 4
gpt4 key购买 nike

为了在带有 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.
}

通过这种方式,应用程序将继续运行,操作系统不会在物联网世界中的任何超时后终止应用程序。

到目前为止,太棒了。

但是:我希望能够在设备关闭时正确关闭后台应用程序(或者应用程序被要求“轻轻”关闭。

在“普通”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();
}

Cancellation Reasons

Canceled Event

关于c# - Windows 10 物联网生命周期(或 : how to property terminate a background application),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com