Uwp 调用TaskInstance.Cancelled时,如何停止后台任务?

Uwp 调用TaskInstance.Cancelled时,如何停止后台任务?,uwp,windows-10-universal,windows-10-mobile,Uwp,Windows 10 Universal,Windows 10 Mobile,我有一个天气应用程序,在后台任务中定期更新天气。当我在我的应用程序上运行Windows应用程序认证工具包时,它未通过后台任务取消测试 我阅读了微软的官方文档。我已经实现了BackgroundTaskCanceledHandler。这是密码 volatile bool _CancelRequested = false; protected async override void OnBackgroundActivated(BackgroundActivatedEventArgs args)

我有一个天气应用程序,在后台任务中定期更新天气。当我在我的应用程序上运行Windows应用程序认证工具包时,它未通过后台任务取消测试

我阅读了微软的官方文档。我已经实现了BackgroundTaskCanceledHandler。这是密码

volatile bool _CancelRequested = false;

protected async override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
    {
        args.TaskInstance.Canceled += new BackgroundTaskCanceledEventHandler(TaskInstance_Canceled);

        // update weather tile

    }

private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
    {
        _CancelRequested = true;
    }
调用TaskInstance_Cancelled时,如何停止OnBackgroundActivated方法内的代码执行?如果它是一个循环,我会使用while,但它只是一大块只执行一次的代码

我是否需要检查每行代码上是否有(_CancelRequested==true)?
这似乎是一个非常不公平的解决方案,所以肯定有更好的办法。。或者,可能我在这里明显做错了什么。

我在每个等待的语句之后检查CancelRequested状态。

我在每个等待的语句之后检查CancelRequested状态。

不是在每一行代码之后,而是在每一个可能需要一些时间的操作之前(异步或重处理)。不是在每一行代码之后,但每次操作之前都可能需要一些时间(异步或繁重的处理)。