Partage via


BitmapSource.SetSourceAsync(IRandomAccessStream) Méthode

Définition

Définit l’image source d’un BitmapSource en accédant à un flux et en traitant le résultat de manière asynchrone.

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

Paramètres

streamSource
IRandomAccessStream

Source de flux qui définit la valeur de la source d’image.

Retours

Gestionnaire asynchrone appelé une fois l'opération terminée.

Attributs

Exemples

Cet exemple présenté ici utilise un flux de fichiers (obtenu à l’aide d’un sélecteur de fichiers, non affiché) pour charger une source d’image en appelant SetSourceAsync. Le sélecteur de fichiers, le flux et l’appel à SetSourceAsync sont tous asynchrones. Le code présenté ici provient d’un exemple de code plus volumineux, l’exemple d’images XAML du 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;
}

Remarques

La définition d’une source d’image en appelant la méthode asynchrone SetSourceAsync plutôt que la méthode SetSource similaire évite de bloquer le thread d’interface utilisateur. Le comportement de SetSourceAsync est similaire à ce que le système fait en interne lorsque vous définissez une source d’image en tant qu’URI dans le balisage : le système n’attend pas pour récupérer et décoder, mais il réexécute la disposition une fois que la source d’image est disponible. L’équivalent d’analyse de balisage n’expose pas l’infrastructure asynchrone , mais la méthode SetSourceAsync le fait. Pour plus d’informations sur l’utilisation d’async, d’attente ou d’utilisation d’une valeur IAsyncAction , consultez Appeler des API asynchrones en C# ou Visual Basic.

Si l’application modifie à nouveau la source de l’image via SetSourceAsync, SetSource ou UriSource alors qu’un appel SetSourceAsync est déjà en cours, l’action SetSourceAsync en attente lève une TaskCanceledException et définit l’état sur Annulé.

Si vous avez un flux Microsoft .NET que vous souhaitez utiliser comme source, vous pouvez utiliser la méthode d’extension AsRandomAccessStream pour le convertir en type IRandomAccessStream nécessaire comme entrée pour SetSourceAsync.

Dans les situations de mémoire insuffisante (probablement sur les téléphones à mémoire faible), il est possible qu’une exception soit levée avec le message « L’image n’est pas reconnue » et un HRESULT de 0x88982F60. Bien que cette exception indique normalement des données incorrectes, si votre application est proche de sa limite de mémoire, la cause de l’exception est probablement une mémoire insuffisante. Dans ce cas, nous vous recommandons de libérer de la mémoire et de réessayer.

S’applique à

Voir aussi