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 secuencia que establece el valor de origen de la imagen.
Devoluciones
Controlador asincrónico al que se llama cuando se completa la operación.
- Atributos
Ejemplos
En este ejemplo que se muestra aquí se usa una secuencia de archivos (obtenida mediante un selector de archivos, no se muestra) para cargar un origen de imagen mediante una llamada a SetSourceAsync. El selector de archivos, la secuencia 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 el sistema hace 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í. Para obtener más información sobre cómo usar async, await o cómo trabajar con un valor IAsyncAction , consulta Llamar a api asincrónicas en C# o Visual Basic.
Si la aplicación vuelve a cambiar 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 en el tipo IRandomAccessStream que se necesita como entrada para SetSourceAsync.
En situaciones de memoria baja (lo más probable es que se produzca una excepción en teléfonos de memoria inferior), 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.