如何通过OneDrive更改StorageFile时收到通知?

时间:2016-06-15 07:49:16

标签: c# windows-10 uwp onedrive storagefile

我有一个基本的UWP Windows 10应用程序(在PC上运行),它声明了一种自定义文件格式。用户可以打开和编辑该格式的文档(就像在Word Mobile中打开.docx文件一样)。

我的问题是:我们假设用户使用我的应用从OneDrive打开文档,并在其他设备上修改文档。如何通知我的应用程序更改重新加载文档?

奖金问题:)如果在本地和其他设备上同时修改文件时会发生冲突怎么办?

在内部,我使用从StorageFile获取的FileOpenPicker来阅读文档。

我查看了StorageFolder.CreateFileQueryWithOptions(...),但我无法获得对StorageFile父文件夹的引用,因为我的应用程序只有读取文件本身的权限,而不能访问父文件夹。

我可以定期查看文件的修改日期,但这似乎远非理想......

1 个答案:

答案 0 :(得分:1)

我认为可以使用OneDrive API和webhooks来实现 很遗憾,我无法找到UWP的任何示例(只有one for ASP.NET可用)

您也可以尝试使用ContentsChanged事件

 auto query = folder.CreateFileQuery();
 query.ContentsChanged += queryContentsChanged;

.......

void queryContentsChanged(IStorageQueryResultBase sender, object args) 
{
    // check what was changed 
}

您可以在此处找到一些信息:File system change notifications in WinRT

由于智能文件的概念,它也适用于OneDrive。从本文中可以看出:Working with files across the local PC and SkyDrive

  

作为开发人员,将SkyDrive文件视为“只是文件” - 它们使用与系统上其他所有文件相同的StorageFile接口,并且可以以相同的方式进行操作。

     

智能文件是一种文件,它像普通文件一样出现在系统中,但只包含元数据和缩略图,而不是完整的文件内容。该文件的内容位于SkyDrive上,可以根据需要下载。