UWP FileWatcher 后台任务

UWP FileWatcher BackgroundTask

我是新来的,目前正在为我的公司编写 Windows 10 桌面 UWP,它应该通过后台任务检查 txt 文件并更新 UWP 磁贴/UWP 辅助磁贴。

使用 StorageLibraryContentChangedTrigger 检查用户库很简单,而且工作正常。但是我的公司说,用户库不是保存 txt 文件的好主意(示例 1):

StorageLibrary videosLib = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Videos);
StorageLibraryContentChangedTrigger videoTrigger = StorageLibraryContentChangedTrigger.Create(videosLib);

taskBuilder = new BackgroundTaskBuilder();
taskBuilder.Name = taskNameFileChanged;
taskBuilder.TaskEntryPoint = taskFileChangedEntryPoint;
taskBuilder.SetTrigger(videoTrigger);
register = taskBuilder.Register();

使用此代码检查应用本地文件夹(示例 2):

List<string> typeFilter = new List<string>();
typeFilter.Add(".txt");
var queryoptions = new Windows.Storage.Search.QueryOptions(Windows.Storage.Search.CommonFileQuery.OrderByName, typeFilter);
var query = ApplicationData.Current.LocalFolder.CreateFileQueryWithOptions(options);

 //subscribe on query's ContentsChanged event
 query.ContentsChanged += Query_ContentsChanged;


 private void Query_ContentsChanged(Windows.Storage.Search.IStorageQueryResultBase sender, object args)
 {
     Debug.WriteLine("File has changed!!!!");
 }

也在工作,但前提是 UWP 已打开/处于活动状态。

Q1: 有没有办法触发 ApplicationData.Current.LocalFolder,所以我可以说,例如"ApplicationData.Current.LocalFolder.ContentChangedTrigger"?

Q2: 如果 Q1 不可能,我还能如何通过后台任务检查 ApplicationData.Current.LocalFolder 内容更改?

Q3: 我知道 UWP 在沙盒中运行,但 UWP 是否可以限制对 windows 注册表项的访问?读取权限就足够了。

提前感谢您的回答:-)

Q1: Is there a way, that triggers the ApplicationData.Current.LocalFolder, so i can say e.g. "ApplicationData.Current.LocalFolder.ContentChangedTrigger"?

就我而言,没有。但是,使用 StorageLibraryContentChangedTrigger,您可以将文本文件放入文档库中,也许这对您的公司更有意义。我会告诉贵公司,目前拥有一个理想的 UWP 应用程序是一个梦想。

Q2: If Q1 is not possible, how can i else check the ApplicationData.Current.LocalFolder for content changes by a background task?

您可以注册 Timer background task, then check the last modified date of the file every 15 minutes in background. Another alternative way is using push notifications 来更新磁贴,而不是本地文本文件。

Q3: I know that an UWP runs in a Sandbox, but can an UWP have a restricted access to a windows registry key? Read access would already suffice.

没有

编辑

您需要 Documents 受限权限才能访问 Documents 文件夹。要使其适用于开发,请手动将条目添加到 xml Package.manifest 文件:

<uap:Capability Name="documentsLibrary"/>

要将具有此受限功能的应用程序提交到应用商店,您需要请求提交。

Anyone may request access to this capability for store submission.