如何在调用 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 状态。
我有一个天气应用程序,它会在后台任务中定期更新天气。当我在我的应用程序上 运行 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 状态。