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 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.