我是新来的,目前为我的公司编写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注册表项?读访问已经足够了。
提前感谢您的答案: - )
答案 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"/>
要使用此限制功能将应用程序提交到商店,您需要请求提交。
任何人都可以请求访问此功能以进行商店提交。