我是新来的,目前正在为我的公司编写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注册表项的访问吗?读取权限已经足够了。
谢谢你的答覆:-)
发布于 2017-06-21 16:22:20
Q1:有什么方法可以触发ApplicationData.Current.LocalFolder,所以我可以这么说。"ApplicationData.Current.LocalFolder.ContentChangedTrigger"?
对我来说没有。然而,使用StorageLibraryContentChangedTrigger,您可以将文本文件放在文档库中,也许这对您的公司更有意义。我会告诉你的公司,拥有一个理想的UWP应用程序是目前的梦想。
Q2:如果Q1是不可能的,我如何通过后台任务检查ApplicationData.Current.LocalFolder中的内容更改?
您可以注册一个计时后台任务,然后每15分钟在背景中检查文件的最后修改日期。另一种替代方法是使用推送通知更新瓦片,而不是本地文本文件。
Q3:我知道一个UWP运行在一个沙箱中,但是一个UWP可以限制对windows注册表项的访问吗?读取权限已经足够了。
不是的。
编辑
您需要文档限制的功能才能访问Documents文件夹。要使其用于开发,请手动将条目添加到xml Package.manifest文件中:
<uap:Capability Name="documentsLibrary"/>为了将应用程序提交到具有这种受限功能的商店,您需要请求提交。
任何人都可以请求访问此功能以进行存储提交。
https://stackoverflow.com/questions/44680259
复制相似问题