UWP 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 ответа
С CacheFileUpdater я могу реагировать на файл, как только он полностью написан
CachedFileUpdater.SetUpdateInformation(fileSavePickerContractTempFile, url, ReadActivationMode.NotNeeded, WriteActivationMode.AfterWrite, CachedFileOptions.None);
В App.xaml.cs теперь я переопределяю событие "OnCachedFileUpdaterActivation", в котором я могу выполнить некоторые действия с полностью записанным файлом. Так что это работает сейчас, как и ожидалось.
НО! Это не работает на Windows 10 Mobile, там OnHachedFileUpdaterActivation EventHandler на App.xaml.cs не запускается, почему это?
Ваш файл сохраняется после строки с await CreateFileAsync
, метод CreateFileAsync
само по себе возвращает IAsyncOperation
, если ты await
это, следующая строка после await
будет выполнен после завершения этой операции.