DataProviderDeferral Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Usato dal delegato di rinvio di un'app di origine per notificare a un oggetto DataPackage che l'app di origine produrrà dati da un'altra funzione asincrona.
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
- Ereditarietà
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Il codice seguente illustra come usare un oggetto DataProviderDeferral per rinviare una richiesta da un'app di destinazione.
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");
}
}
Commenti
Le app di origine hanno la possibilità di promettere formati di dati per le app di destinazione, invece di fornire immediatamente il formato. Un esempio comune è quando un'app di origine supporta un formato di immagine, ad esempio JPG, ma non crea il formato a meno che l'app di destinazione non lo richieda. È possibile scaricare l'esempio di app condivisione dell'origine del contenuto.
Metodi
Complete() |
Informa un DataPackage che è pronto per l'elaborazione. |