In UWP I'm trying to create a simple background task on demand. So when I click a button, I want a background task to kick off and process some files in the background.
Below is what my basic Task code is:
public class BackgroundSyncService
{
private ApplicationTrigger trigger = new ApplicationTrigger();
public async Task Start()
{
if (IsRegistered())
Deregister();
BackgroundExecutionManager.RemoveAccess();
// does this prompt everytime?
await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
builder.Name = "BackgroundTask";
builder.TaskEntryPoint = typeof(BackgroundTask).FullName;
builder.SetTrigger(trigger);
BackgroundTaskRegistration task = builder.Register();
task.Completed += Task_Completed;
var result = await trigger.RequestAsync();
}
private void Task_Completed(BackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs args)
{
// alert UI
}
public void Stop()
{
Deregister();
}
private void Deregister()
{
var taskName = "BackgroundTask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
if (task.Value.Name == taskName)
task.Value.Unregister(true);
}
private bool IsRegistered()
{
var taskName = "BackgroundTask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
if (task.Value.Name == taskName)
return true;
return false;
}
}
When the code hits builder.Register() it throws the following exception:
System.Exception: 'Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7)'
Not sure what I'm doing wrong here or what this error means in context of a Background Task?