Bagikan melalui


DataProviderDeferral Kelas

Definisi

Digunakan oleh delegasi penangguhan aplikasi sumber untuk memberi tahu objek DataPackage bahwa aplikasi sumber akan menghasilkan data dari fungsi asinkron lainnya.

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
Warisan
Object Platform::Object IInspectable DataProviderDeferral
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Kode berikut menunjukkan cara menggunakan objek DataProviderDeferral untuk menangguhkan permintaan dari aplikasi target.

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

Keterangan

Aplikasi sumber memiliki opsi untuk menjanjikan format data ke aplikasi target, alih-alih segera menyediakan format. Contoh umumnya adalah ketika aplikasi sumber mendukung format gambar, seperti JPG, tetapi tidak membuat format kecuali aplikasi target memintanya. Anda mungkin ingin mengunduh sampel aplikasi sumber konten Berbagi kami.

Metode

Complete()

Menginformasikan DataPackage bahwa DataPackage siap untuk diproses.

Berlaku untuk