Как остановить фоновую задачу при вызове TaskInstance.Canceled? - PullRequest
0 голосов
/ 06 июля 2019

У меня есть приложение погоды, которое периодически обновляет погоду в фоновом режиме.Когда я запускаю 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;
    }

Как остановить выполнение кода внутри метода OnBackgroundActivation при вызове TaskInstance_Canceled?Если бы это был цикл, я бы использовал while, но это просто большой кусок кода, который выполняется только один раз.

Нужно ли проверять, есть ли (_CancelRequested == true) в каждой строке кода?Это кажется очень нелегким решением, так что определенно должен быть лучший способ ... Или, возможно, я здесь явно что-то делаю не так.

1 Ответ

2 голосов
/ 06 июля 2019

Я проверяю состояние CancelRequested после каждого ожидаемого заявления.

...