Compartir a través de


BitmapSource.SetSourceAsync(IRandomAccessStream) Método

Definición

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.

Se aplica a

Consulte también