UWP FileSavePicker合同文件处理

时间:2017-01-11 16:25:03

标签: c# uwp win-universal-app filesavepicker

在我的应用中,我正在使用FileSavePicker合约(提供商)。因此其他应用可以将文件保存到我的应用程序我实现了它,因为它在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()之后我需要更多地使用该文件来集成到我的应用程序中。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

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

join

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

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

答案 1 :(得分:0)

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