Freigeben über


DataProviderDeferral Klasse

Definition

Wird vom Verzögerungsdelegat einer Quell-App verwendet, um ein DataPackage-Objekt zu benachrichtigen, dass die Quell-App Daten aus einer anderen asynchronen Funktion erzeugt.

public ref class DataProviderDeferral sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DataProviderDeferral final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DataProviderDeferral
Public NotInheritable Class DataProviderDeferral
Vererbung
Object Platform::Object IInspectable DataProviderDeferral
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Der folgende Code zeigt, wie Sie mithilfe eines DataProviderDeferral-Objekts eine Anforderung von einer Ziel-App zurückstellen.

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");
    }
}

Hinweise

Quell-Apps haben die Möglichkeit, vielversprechende Datenformate für Apps zu verwenden, anstatt das Format sofort anzugeben. Ein häufiges Beispiel ist, wenn eine Quell-App ein Bildformat unterstützt, z. B. JPG, das Format jedoch nur erstellt, wenn die Ziel-App es anfordert. Möglicherweise möchten Sie unser Beispiel für die Quell-App zum Freigeben von Inhalten herunterladen.

Methoden

Complete()

Informiert ein DataPackage , dass es zur Verarbeitung bereit ist.

Gilt für: