UWP StorageLibraryContentChangedTrigger删除多个文件时
问题描述:
我正在使用BackgroundTask跟踪我的图片库中的文件和文件夹更改。这很好,但是当我一次删除多个文件时,BackgroundTask不会触发。UWP StorageLibraryContentChangedTrigger删除多个文件时
这里是我的BG-作业注册
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();
}
这是我简单的测试BG-任务
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();
}
最后我的DoWork()任务
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();
}
没有我想念什么?当只删除一个文件时,BackgroundTask将被成功触发,但当我从我的PicturesLibrary中一次删除多个文件时不会。
问候
答
我错过了什么?如果只删除一个文件,该BackgroundTask将成功触发,而不是当我立刻从我PicturesLibrary
目前bahavior是,删除多个文件时,更改记录将被推迟到一个删除多个文件在下一次改变。
例如,删除这两个文件后,我们创建了一个新文件,任务被触发,删除修改包括在StorageLibraryChange列表:
[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
我们已经向这个问题和相关团队正在煽动它。
谢谢你的回复。所以这个问题应该在下一个Windows 10(Mobile)版本中解决? – andy
@andy无法保证,相应的团队正在处理其他优先级最高的任务,我会密切关注此问题并在此处发布更新。感谢您的理解。 –
好吧,我明白了。感谢您的调查! – andy