private async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs e) { // This scenario demonstrates how the app can go about handling the TargetFileRequested event on the UI thread, from // which the app can manipulate the UI, show error dialogs, etc. // Requesting a deferral allows the app to return from this event handler and complete the request at a later time. // In this case, the deferral is required as the app intends on handling the TargetFileRequested event on the UI thread. // Note that the deferral can be requested more than once but calling Complete on the deferral a single time will complete // original TargetFileRequested event. var deferral = e.Request.GetDeferral(); await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { // This method will be called on the app's UI thread, which allows for actions like manipulating // the UI or showing error dialogs // Display a dialog indicating to the user that a corrective action needs to occur var errorDialog = new Windows.UI.Popups.MessageDialog("If the app needs the user to correct a problem before the app can save the file, the app can use a message like this to tell the user about the problem and how to correct it."); await errorDialog.ShowAsync(); // Set the targetFile property to null and complete the deferral to indicate failure once the user has closed the // dialog. This will allow the user to take any neccessary corrective action and click the Save button once again. e.Request.TargetFile = null; deferral.Complete(); }); }
private async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs e) { // This scenario demonstrates how to handle the TargetFileRequested event on the background thread on which it was raised // Requesting a deferral allows the app to call another asynchronous method and complete the request at a later time var deferral = e.Request.GetDeferral(); e.Request.TargetFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(sender.FileName, CreationCollisionOption.GenerateUniqueName); // Complete the deferral to let the Picker know the request is finished deferral.Complete(); }
private async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs e) { // This scenario demonstrates how to handle the TargetFileRequested event on the background thread on which it was raised // Requesting a deferral allows the app to call another asynchronous method and complete the request at a later time var deferral = e.Request.GetDeferral(); StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sender.FileName, CreationCollisionOption.ReplaceExisting); CachedFileUpdater.SetUpdateInformation(file, "CachedFile", ReadActivationMode.NotNeeded, WriteActivationMode.AfterWrite, CachedFileOptions.RequireUpdateOnAccess); e.Request.TargetFile = file; // Complete the deferral to let the Picker know the request is finished deferral.Complete(); }
private async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs e) { // This scenario demonstrates how to handle the TargetFileRequested event on the background thread on which it was raised // Requesting a deferral allows the app to call another asynchronous method and complete the request at a later time var deferral = e.Request.GetDeferral(); StorageFile file; // If the checkbox is checked then the requested file name will be ConflictingFile.txt instead of what was sent to us in sender.name. // If background task sees that ConflictingFile is in the name of the file it sets the returned status to FileUpdateStatus.UserInputNeeded. // This will cause a prompt for the user to open the app to fix the conflict. if (simulateUpdateConflict) { file = await ApplicationData.Current.LocalFolder.CreateFileAsync("ConflictingFile.txt", CreationCollisionOption.ReplaceExisting); } else { file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sender.FileName, CreationCollisionOption.ReplaceExisting); } CachedFileUpdater.SetUpdateInformation(file, "CachedFile", ReadActivationMode.NotNeeded, WriteActivationMode.AfterWrite, CachedFileOptions.RequireUpdateOnAccess); e.Request.TargetFile = file; // Complete the deferral to let the Picker know the request is finished deferral.Complete(); }