BitmapSource.SetSourceAsync(IRandomAccessStream) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает исходный образ для BitmapSource путем доступа к потоку и асинхронной обработки результата.
public:
virtual IAsyncAction ^ SetSourceAsync(IRandomAccessStream ^ streamSource) = SetSourceAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction SetSourceAsync(IRandomAccessStream const& streamSource);
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction SetSourceAsync(IRandomAccessStream streamSource);
function setSourceAsync(streamSource)
Public Function SetSourceAsync (streamSource As IRandomAccessStream) As IAsyncAction
Параметры
- streamSource
- IRandomAccessStream
Источник потока, который задает значение источника изображения.
Возвращаемое значение
Асинхронный обработчик, вызывающийся после завершения операции.
- Атрибуты
Примеры
В этом примере здесь используется поток файлов (полученный с помощью средства выбора файлов, а не показан) для загрузки источника изображения путем вызова SetSourceAsync. Средство выбора файлов, поток и вызов SetSourceAsync являются асинхронными. Приведенный здесь код представлен из более крупного примера кода, образца образов XAML пакета SDK.
// Ensure the stream is disposed once the image is loaded
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
// Set the image source to the selected bitmap
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.DecodePixelHeight = decodePixelHeight;
bitmapImage.DecodePixelWidth = decodePixelWidth;
await bitmapImage.SetSourceAsync(fileStream);
Scenario2Image.Source = bitmapImage;
}
Комментарии
Задание источника изображения путем вызова асинхронного метода SetSourceAsync , а не аналогичного метода SetSource, не блокирует поток пользовательского интерфейса. Поведение SetSourceAsync аналогично тому, что система выполняет внутри системы при установке источника изображения в качестве URI в разметке: система не ожидает получения и декодировки, но выполняет макет снова после того, как источник изображения доступен. Эквивалент анализа разметки не предоставляет асинхронную инфраструктуру, но метод SetSourceAsync делает. Дополнительные сведения о том, как использовать асинхронный интерфейс, ожидание или как работать со значением IAsyncAction, см. в разделе "Вызов асинхронных API" в C# или Visual Basic.
Если приложение снова изменяет источник изображения с помощью SetSourceAsync, SetSource или UriSource во время выполнения вызова SetSourceAsync, ожидающее действие SetSourceAsync вызовет вызов TaskCanceledException и задайте для параметра Statusзначение Canceled.
Если у вас есть поток Microsoft .NET, который вы хотите использовать в качестве источника, можно использовать метод расширения AsRandomAccessStream для преобразования его в тип IRandomAccessStream, который необходим в качестве входных данных для SetSourceAsync.
В ситуациях с низкой памятью (скорее всего, на телефонах с более низкой памятью) можно создать исключение с сообщением "Изображение не распознано" и HRESULT 0x88982F60. Хотя это исключение обычно указывает на плохие данные, если ваше приложение близко к ограничению памяти, причина исключения, скорее всего, будет низкой памятью. В этом случае рекомендуется освободить память и повторить попытку.