Отмена фонового задания только делает его приостановленным - PullRequest
0 голосов
/ 29 ноября 2018

Я отменяю регистрацию своей задачи (я удалил If, чтобы убедиться, что все задачи удалены.):

foreach (var taskA in BackgroundTaskRegistration.AllTasks)
{
    //if (taskA.Value.Name == exampleTaskName)
    {
        taskA.Value.Unregister(true);
    }
}

Затем я пытаюсь воссоздать ее и проверить, не существует ли она:

private async void LaunchBackground()
{
    await BackgroundExecutionManager.RequestAccessAsync();

    foreach (var taskA in BackgroundTaskRegistration.AllTasks)
    {
        if (taskA.Value.Name == exampleTaskName)
        {
            await new ApplicationTrigger().RequestAsync();
            return;
        }
    }

    var builder = new BackgroundTaskBuilder();

    builder.Name = exampleTaskName;
    builder.TaskEntryPoint = "Background.BackgroundTask";

    ApplicationTrigger _AppTrigger = new ApplicationTrigger();
    builder.SetTrigger(_AppTrigger);

    builder.Register();

    await _AppTrigger.RequestAsync();
}

Моя задача теперь только отложена и выполняет некоторые другие действия, освобождая ее при отмене:

    public void Run(IBackgroundTaskInstance taskInstance)
    {
        _deferral = taskInstance.GetDeferral();
        taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);
        AddWatched();
    }

    private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
    {
        _deferral.Complete();
    }

Но когда я пытаюсь отменить и отменить регистрацию задачи, она просто приостанавливается.Когда я снова запускаю его, он ведет себя странно (я думаю, что сейчас есть два его экземпляра, которые оба пытаются сделать одно и то же одновременно).

В идеале я хотел бы иметь возможность убитьфоновое задание, вместо того, чтобы выполнять его задание - или, если это не сработает, если задание приостановлено, оно должно быть приостановлено, вместо того, чтобы другое было создано И старое было приостановлено.

1 Ответ

0 голосов
/ 29 ноября 2018

Если вы хотите отменить, установите логическое свойство в ApplicationSettings из вашего приложения.В фоновой задаче периодически проверяйте это свойство во время выполнения и, если установлено, отменяйте процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...