0

在我的应用程序中,我使用的是 FileSavePicker Contract (Provider)。所以其他应用程序可以将文件保存到我的应用程序。我实现了它,如 MSDN 上所示。现在的问题是,我必须处理一个“已保存”的文件,但我怎么知道,何时保存完成?这是我的处理程序

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() 之后,我需要更多地使用该文件以集成到我的应用程序中。有人可以指出我正确的方向吗?

4

2 回答 2

1

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

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

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

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

于 2017-01-17T17:53:16.380 回答
0

您的文件在await CreateFileAsync. 方法CreateFileAsync本身返回IAsyncOperation,如果是,则在此操作完成时执行await后面的下一行。await

于 2017-01-11T16:33:42.383 回答