UWP FileSavePicker 合约文件处理

UWP FileSavePicker Contract File Processing

在我的应用程序中,我使用的是 FileSavePicker 合同(提供商)。这样其他应用程序就可以将文件保存到我的应用程序中。我实现了它,如 MSDN 上所示。现在的问题是,我必须处理一个 "saved" 文件,但我怎么知道保存何时完成?这是我的处理程序

private async void FileSavePickerUI_TargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs args)
{
        var deferral = args.Request.GetDeferral();

        string saveFileName = sender.FileName;

        StorageFolder fileSavePickerContractTempFolder = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync("FileSavePickerContract", CreationCollisionOption.OpenIfExists);

        StorageFile fileSavePickerContractTempFile = await fileSavePickerContractTempFolder.CreateFileAsync(saveFileName, CreationCollisionOption.ReplaceExisting);

        args.Request.TargetFile = fileSavePickerContractTempFile;

        deferral.Complete();
    }

我的应用程序的目标是周年纪念更新 (1607)。在 deferral.Complete() 之后,我需要更多地使用该文件以集成到我的应用程序中。有人可以指出我正确的方向吗?

您的文件保存在 await CreateFileAsync 行之后。方法 CreateFileAsync 本身 returns IAsyncOperation,如果你 await 它,await 之后的下一行将在该操作完成时执行。

有了 CacheFileUpdater,我可以对文件做出反应,只要它被完全写入

CachedFileUpdater.SetUpdateInformation(fileSavePickerContractTempFile, url, ReadActivationMode.NotNeeded, WriteActivationMode.AfterWrite, CachedFileOptions.None);

在 App.xaml.cs 上,我现在覆盖了 "OnCachedFileUpdaterActivated" 事件,在该事件中我可以对完全写入的文件执行一些操作。所以这现在按预期工作了。

但是!这在 Windows 10 Mobile 上不起作用,App.xaml.cs 上的 OnCachedFileUpdaterActivated EventHandler 没有被触发,这是为什么?