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
- Наследование
- Атрибуты
Требования к 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 о том, что он готов к обработке. |