Я отменяю регистрацию своей задачи (я удалил 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();
}
Но когда я пытаюсь отменить и отменить регистрацию задачи, она просто приостанавливается.Когда я снова запускаю его, он ведет себя странно (я думаю, что сейчас есть два его экземпляра, которые оба пытаются сделать одно и то же одновременно).
В идеале я хотел бы иметь возможность убитьфоновое задание, вместо того, чтобы выполнять его задание - или, если это не сработает, если задание приостановлено, оно должно быть приостановлено, вместо того, чтобы другое было создано И старое было приостановлено.