I'm using a BackgroundTask for tracking file and Folder changes on my pictures library. This works well, but when i delete multiple files at once, the BackgroundTask does not trigger.
Here is my BG-Task Registration
private async void RegisterTask()
{
var result = await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
builder.Name = taskName;
builder.TaskEntryPoint = taskEntryPoint;
StorageLibrary picturesLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
StorageLibraryContentChangedTrigger libraryTrigger = StorageLibraryContentChangedTrigger.Create(picturesLibrary);
builder.SetTrigger(libraryTrigger);
builder.Register();
}
And this is my simple test BG-Task
public async void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral();
try
{
await DoWork();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("ERROR BG: " + ex.Message.ToString());
}
deferral.Complete();
}
And finally my DoWork() Task
private async Task DoWork()
{
StorageLibrary picturesLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
StorageLibraryChangeTracker picturesTracker = picturesLibrary.ChangeTracker;
picturesTracker.Enable();
StorageLibraryChangeReader changeReader = picturesTracker.GetChangeReader();
IReadOnlyList<StorageLibraryChange> changes = await changeReader.ReadBatchAsync();
foreach (StorageLibraryChange change in changes)
{
// Reading the changes
}
await changeReader.AcceptChangesAsync();
}
Did i miss something? When deleting only one file, the BackgroundTask will be triggered successfully, but not when i delete multiple files at once from my PicturesLibrary.
Best Regards
Did i miss something? When deleting only one file, the BackgroundTask will be triggered successfully, but not when i delete multiple files at once from my PicturesLibrary
The current bahavior is, when deleting multiple files, the change records will be postponed to the one in the next change.
For example, after deleting two files, we created a new file, the task was triggered and the deleting changes is included in StorageLibraryChange list:
[2/28/2017 4:52:35 PM] Background LibFileChangeTask Start
Path: C:\Users\xxxx\Pictures\2.txt
ChangeType: Deleted
Path: C:\Users\xxxx\Pictures\1.txt
ChangeType: Deleted
Path: C:\Users\xxxx\Pictures\New Text Document.txt
ChangeType: Created
We have filed this issue and the related team is instigating it.