Share via


BitmapSource.SetSourceAsync(IRandomAccessStream) Metodo

Definizione

Imposta l'immagine di origine per bitmapSource accedendo a un flusso ed elaborando il risultato in modo asincrono.

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

Parametri

streamSource
IRandomAccessStream

Origine di flusso che imposta il valore dell'origine dell'immagine.

Restituisce

Gestore asincrono chiamato una volta completata l'operazione.

Attributi

Esempio

In questo esempio viene usato un flusso di file (ottenuto usando una selezione file, non visualizzato) per caricare un'origine immagine chiamando SetSourceAsync. La selezione file, il flusso e la chiamata a SetSourceAsync sono tutti asincroni. Il codice illustrato di seguito proviene da un esempio di codice più grande, l'esempio di immagini 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;
}

Commenti

L'impostazione di un'origine immagine chiamando il metodo SetSourceAsync asincrono anziché il metodo SetSource simile evita di bloccare il thread dell'interfaccia utente. Il comportamento SetSourceAsync è simile a quello che il sistema esegue internamente quando si imposta un'origine immagine come URI nel markup: il sistema non attende di recuperare e decodificare, ma esegue di nuovo il layout una volta disponibile l'origine immagine. L'equivalente di analisi del markup non espone l'infrastruttura asincrona , ma il metodo SetSourceAsync esegue. Per altre informazioni su come usare async, await o come usare un valore IAsyncAction, vedere Chiamare API asincrone in C# o Visual Basic.

Se l'app modifica nuovamente l'origine immagine tramite SetSourceAsync, SetSource o UriSource mentre è già in corso una chiamata SetSourceAsync, l'azione SetSourceAsync in sospeso genererà un'azione TaskCanceledException e imposta lo stato su Annulla.

Se si dispone di un flusso Microsoft .NET che si vuole usare come origine, è possibile usare il metodo di estensione AsRandomAccessStream per convertirlo nel tipo IRandomAccessStream necessario come input per SetSourceAsync.

In situazioni di memoria ridotta (molto probabilmente nei telefoni con memoria inferiore), è possibile generare un'eccezione con il messaggio "L'immagine non è riconosciuta" e un HRESULT di 0x88982F60. Anche se questa eccezione indica normalmente dati non valida, se l'app è vicina al limite di memoria, è probabile che la causa dell'eccezione sia bassa memoria. In questo caso, è consigliabile liberare memoria e riprovare.

Si applica a

Vedi anche