删除多个文件时的 UWP StorageLibraryContentChangedTrigger
Posted
技术标签:
【中文标题】删除多个文件时的 UWP StorageLibraryContentChangedTrigger【英文标题】:UWP StorageLibraryContentChangedTrigger when deleting multiple files 【发布时间】:2017-02-25 06:36:41 【问题描述】:我正在使用 BackgroundTask 来跟踪我的图片库上的文件和文件夹更改。这很好用,但是当我一次删除多个文件时,BackgroundTask 不会触发。
这是我的 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-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();
最后是我的 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 会成功触发,但当我从图片库中一次删除多个文件时不会触发。
最好的问候
【问题讨论】:
【参考方案1】:我错过了什么吗?仅删除一个文件时,BackgroundTask 将成功触发,但当我从图片库中一次删除多个文件时不会触发
目前的做法是,删除多个文件时,更改记录会推迟到下一次更改中的那个。
例如,删除两个文件后,我们创建了一个新文件,任务被触发,删除的更改包含在 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(移动)版本中得到解决? @andy 不能保证,相应的团队正在处理其他优先级最高的任务,我会关注这个问题并在这里发布更新。感谢您的理解。 好的,我明白了。感谢您的调查! 创作者更新中好像没有解决这个问题,对吗?以上是关于删除多个文件时的 UWP StorageLibraryContentChangedTrigger的主要内容,如果未能解决你的问题,请参考以下文章