TargetFileRequestDeferral TargetFileRequestDeferral TargetFileRequestDeferral TargetFileRequestDeferral Class


Used by an app that provides a save location to indicate asynchronously that the app is finished responding to a targetfilerequested event.

public : sealed class TargetFileRequestDeferral : ITargetFileRequestDeferral
public sealed class TargetFileRequestDeferral : ITargetFileRequestDeferral
Public NotInheritable Class TargetFileRequestDeferral Implements ITargetFileRequestDeferral
// This class does not provide a public constructor.
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)


The File picker sample demonstrates how to respond to a targetfilerequested event handler, including how to get a deferral.

// Event handler
private async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs e)
    // Respond to 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();

    // Create file and assign to TargetFile property
    e.Request.TargetFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(sender.FileName, CreationCollisionOption.GenerateUniqueName);

    // Complete the deferral to let the Picker know the request is finished

// Register for the event
fileSavePickerUI.TargetFileRequested += new TypedEventHandler<FileSavePickerUI, TargetFileRequestedEventArgs>(OnTargetFileRequested);

// Event handler
function onTargetFileRequested(e) {
    var deferral;
    deferral = e.request.getDeferral();

    // Create a file to pass to the file picker which then gives it to the calling app
    Windows.Storage.ApplicationData.current.localFolder.createFileAsync(fileSavePickerUI.fileName).done(function (file) {
            // Assign the resulting file to the targetFile property and complete the deferral to indicate success
        e.request.targetFile = file;
    }, function () {
        // Set the targetFile property to null and complete the deferral to indicate failure
        e.request.targetFile = null;

// Register for the event
fileSavePickerUI.addEventListener("targetfilerequested", onTargetFileRequested, false);

In the example, e contains a TargetFileRequestedEventArgs object.


If your app participates in the File Save Picker contract and a targetfilerequested event fires, your app should create a new storageFile that represents the file the user wants to save. The name of the storageFile you create must match the name of the file specified by the fileName property. The storageFile you create is returned to the app that called the file picker (the calling app) so that the calling app can write content to the file. Learn more about responding to this event in targetFileRequestedEventArgs.

Your app, as the provider of a save location, can signal that it has finished its asynchronous response to a targetfilerequested event by calling targetFileRequestDeferral.complete. Learn more about responding asynchronously to a targetfilerequested event in targetFileRequestedEventArgs.


Complete() Complete() Complete() Complete()

Signals that the app providing the save location finished responding to a targetfilerequested event.

public : void Complete()
public void Complete()
Public Function Complete() As void


Learn about responding asynchronously to a targetfilerequested event in targetFileRequestedEventArgs.

Calling this method will complete the request even if getDeferral has been called multiple times.

See Also

See Also