UWP FileWatcher BackgroundTask

时间:2017-06-21 15:23:51

标签: uwp background-task file-watcher

我是新来的,目前为我的公司编写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在Sandbox中运行,但UWP是否可以限制访问Windows注册表项?读访问已经足够了。

提前感谢您的答案: - )

1 个答案:

答案 0 :(得分:0)

  

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

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

  

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

您可以注册Timer后台任务,然后在后台每隔15分钟检查一次文件的上次修改日期。另一种替代方法是使用push notifications更新磁贴,而不是本地文本文件。

  第三季:我知道UWP在Sandbox中运行,但UWP可以运行   限制访问Windows注册表项?读取权限已经存在   就足够了。

没有

修改

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

<uap:Capability Name="documentsLibrary"/>

要使用此限制功能将应用程序提交到商店,您需要请求提交。

  

任何人都可以请求访问此功能以进行商店提交。