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

时间:2019-07-06 16:59:49

标签: uwp windows-10-universal windows-10-mobile

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

我阅读了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,但这只是一大段代码,只能执行一次。

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

1 个答案:

答案 0 :(得分:2)

每条等待的语句后,我都会检查CancelRequested状态。