BitmapSource.SetSourceAsync(IRandomAccessStream) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 del flusso che imposta il valore di origine dell'immagine.
Restituisce
Gestore asincrono chiamato una volta completata l'operazione.
- Attributi
Esempio
Questo esempio illustrato di seguito usa 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 deriva da un esempio di codice più ampio, l'esempio di immagini XAML dell'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 il recupero e la decodifica, ma esegue di nuovo il layout una volta che l'origine dell'immagine è disponibile. L'equivalente di analisi del markup non espone l'infrastruttura asincrona , ma il metodo SetSourceAsync esegue questa operazione. Per altre info su come usare async, await o come usare un valore IAsyncAction , vedi Chiamare API asincrone in C# o Visual Basic.
Se l'app modifica nuovamente l'origine dell'immagine tramite SetSourceAsync, SetSource o UriSource mentre è già in corso una chiamata SetSourceAsync, l'azione SetSourceAsync in sospeso genererà un'eccezione TaskCanceledException e imposterà 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 insufficiente (molto probabilmente nei telefoni con memoria inferiore), è possibile che venga generata un'eccezione con il messaggio "L'immagine non è riconosciuta" e un HRESULT di 0x88982F60. Anche se questa eccezione indica in genere dati non valido, se l'app è vicina al limite di memoria, è probabile che la causa dell'eccezione sia insufficiente. In questo caso, è consigliabile liberare memoria e riprovare.