如何在调用 TaskInstance.Canceled 时停止后台任务?

How do I stop a background task when TaskInstance.Canceled is called?

我有一个天气应用程序,它会在后台任务中定期更新天气。当我在我的应用程序上 运行 Windows App Certification Kit 时,它无法通过后台任务取消测试。

我阅读了 Microsoft 官方文档。我已经实施了 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_Canceled 时停止执行 OnBackgroundActivated 方法中的代码?如果它是一个循环,我会使用 while,但它只是一大块只执行一次的代码。

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

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