BitmapSource.SetSourceAsync(IRandomAccessStream) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Establece la imagen de origen de un objeto BitmapSource accediendo a una secuencia y procesando el resultado de forma asincrónica.
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
Parámetros
- streamSource
- IRandomAccessStream
Origen de flujo que establece el valor de origen de la imagen.
Devoluciones
Se llama a un controlador asincrónico cuando se completa la operación.
- Atributos
Ejemplos
En este ejemplo se usa una secuencia de archivos (obtenida mediante un selector de archivos, no se muestra) para cargar un origen de imagen llamando a SetSourceAsync. El selector de archivos, la transmisión y la llamada a SetSourceAsync son asincrónicos. El código que se muestra aquí procede de un ejemplo de código más grande, el ejemplo de imágenes XAML del 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;
}
Comentarios
Establecer un origen de imagen llamando al método asincrónico SetSourceAsync en lugar del método SetSource similar evita bloquear el subproceso de la interfaz de usuario. El comportamiento de SetSourceAsync es similar al que hace el sistema internamente cuando se establece un origen de imagen como un URI en el marcado: el sistema no espera a recuperar y descodificar, pero vuelve a ejecutar el diseño una vez que el origen de la imagen está disponible. El análisis de marcado equivalente no expone la infraestructura asincrónica , pero el método SetSourceAsync sí lo hace. Para obtener más información sobre cómo usar async, await o cómo trabajar con un valor IAsyncAction, consulta Llamada a API asincrónicas en C# o Visual Basic.
Si la aplicación cambia de nuevo el origen de la imagen a través de SetSourceAsync, SetSource o UriSource mientras una llamada a SetSourceAsync ya está en curso, la acción SetSourceAsync pendiente iniciará una taskCanceledException y establecerá el estado en Cancelado.
Si tiene una secuencia de Microsoft .NET que desea usar como origen, puede usar el método de extensión AsRandomAccessStream para convertirlo al tipo IRandomAccessStream necesario como entrada para SetSourceAsync.
En situaciones de memoria baja (lo más probable es que en teléfonos con memoria inferior), es posible que se genere una excepción con el mensaje "La imagen no se reconoce" y un HRESULT de 0x88982F60. Aunque esta excepción normalmente indica datos incorrectos, si la aplicación está cerca de su límite de memoria, es probable que la causa de la excepción sea poca memoria. En ese caso, se recomienda liberar memoria e intentarlo de nuevo.