DataProviderDeferral Class

Utilisé par le délégué de différé d'une application source pour avertir un objet DataPackage que l'application source produira des données depuis une autre fonction asynchrone.

Syntaxe


/* Pour plus d'informations sur la création ou l'accès à cet objet, consultez les notes. */

Attributs

[DualApiPartition()]
[MarshalingBehavior(Agile)]
[Version(0x06020000)]

Membres

DataProviderDeferralClasse possède ces types de membres :

Méthodes

The DataProviderDeferral Classe a les méthodes suivantes. Avec C#, Visual Basic et C++, elle hérite également des méthodes de Object Classe.

MéthodeDescription
Complete Informs a DataPackage that it is ready for processing.

 

Remarques

Les applications source peuvent promettre des formats de données aux applications cible au lieu de fournir le format immédiatement. Un exemple classique est lorsqu'une application source prend en charge un format d'image, tel que le fichier JPG, mais ne crée pas le format à moins que l'application cible le demande. Pour en savoir plus sur la façon dont ce type d'échange fonctionne avec les applications source et cible, consultez Comment prendre en charge des scénarios d'extraction. Vous souhaiterez également peut-être télécharger notre Exemple de partage de contenu d'application source.

Windows Phone 8

Cette API n'est pas implémentée et lève une exception si elle est appelée. Consultez API de runtime Windows Phone.

Exemples

Le code suivant montre comment utiliser un objet DataProviderDeferral pour différer une demande d'une application cible.


async private void OnDeferredImageRequestedHandler(DataProviderRequest request)
{
    if (this.imageFile != null)
    {
        // A deferral object is required because this method uses "await" before setting the 
        // data in the DataPackage.
        var deferral = request.GetDeferral();

        var imageStream = await this.imageFile.OpenAsync(FileAccessMode.Read);

        // Decode the image.
        var imageDecoder = await BitmapDecoder.CreateAsync(imageStream);

        // Re-encode the image at 50% width and height.
        var inMemoryStream = new InMemoryRandomAccessStream();
        var imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);
        imageEncoder.BitmapTransform.ScaledWidth = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
        imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
        await imageEncoder.FlushAsync();

        request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));

        await log(OutputText, "Image has been set via deferral");

        // The data is set. Signal that the operation is complete.
        deferral.Complete();
    }
    else
    {
        await log(OutputText, "Error: imageFile is null");
    }
}


Conditions requises

Client minimal pris en charge

Windows 8 [Applications Windows Store, applications de bureau]

Serveur minimal pris en charge

Windows Server 2012 [Applications Windows Store, applications de bureau]

Téléphone minimal pris en charge

Windows Phone 8 [non implémenté, consultez la section Notes]

Espace de noms

Windows.ApplicationModel.DataTransfer
Windows::ApplicationModel::DataTransfer [C++]

Métadonnées

Windows.winmd

 

 

Afficher:
© 2014 Microsoft