다음을 통해 공유


DataProviderDeferral 클래스

정의

원본 앱의 지연 대리자에서 원본 앱이 다른 비동기 함수의 데이터를 생성할 것임을 DataPackage 개체에 알리는 데 사용됩니다.

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
상속
Object Platform::Object IInspectable DataProviderDeferral
특성

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

예제

다음 코드에서는 DataProviderDeferral 개체를 사용하여 대상 앱에서 요청을 연기하는 방법을 보여 있습니다.

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

설명

원본 앱에는 즉시 형식을 제공하는 대신 대상 앱에 데이터 형식을 약속하는 옵션이 있습니다. 일반적인 예는 원본 앱이 JPG와 같은 이미지 형식을 지원하지만 대상 앱이 요청하지 않는 한 형식을 만들지 않는 경우입니다. 콘텐츠 공유 원본 앱 샘플을 다운로드할 수 있습니다.

메서드

Complete()

처리할 준비가 되었다는 것을 DataPackage 에 알릴 수 있습니다.

적용 대상