Freigeben über


BitmapSource.SetSourceAsync(IRandomAccessStream) Methode

Definition

Legt das Quellbild für eine BitmapSource fest, indem auf einen Stream zugegriffen und das Ergebnis asynchron verarbeitet wird.

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

Parameter

streamSource
IRandomAccessStream

Die Streamquelle, die den Wert der Bildquelle festlegt.

Gibt zurück

Ein asynchroner Handler wird aufgerufen, wenn der Vorgang abgeschlossen ist.

Attribute

Beispiele

In diesem hier gezeigten Beispiel wird ein Dateistream (mit einer Dateiauswahl abgerufen, nicht gezeigt) verwendet, um eine Bildquelle durch Aufrufen von SetSourceAsync zu laden. Die Dateiauswahl, der Stream und der Aufruf von SetSourceAsync sind alle asynchron. Der hier gezeigte Code stammt aus einem größeren Codebeispiel, dem SDK-XAML-Beispiel für Bilder.

// 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;
}

Hinweise

Das Festlegen einer Bildquelle durch Aufrufen der asynchronen SetSourceAsync-Methode anstelle der ähnlichen SetSource-Methode verhindert das Blockieren des UI-Threads. Das Verhalten SetSourceAsync ähnelt dem, was das System intern ausführt, wenn Sie eine Bildquelle als URI im Markup festlegen: Das System wartet nicht auf das Abrufen und Decodieren, sondern führt das Layout erneut aus, sobald die Bildquelle verfügbar ist. Das Äquivalent der Markupanalyse macht die asynchrone Infrastruktur nicht verfügbar, die SetSourceAsync-Methode jedoch. Weitere Informationen zur Verwendung von async, await oder zum Arbeiten mit einem IAsyncAction-Wert finden Sie unter Aufrufen asynchroner APIs in C# oder Visual Basic.

Wenn die App die Bildquelle erneut über SetSourceAsync, SetSource oder UriSource ändert, während bereits ein SetSourceAsync-Aufruf ausgeführt wird, löst die ausstehende SetSourceAsync-Aktion eine TaskCanceledException aus und legt den Status auf Canceled fest.

Wenn Sie über einen Microsoft .NET-Stream verfügen, den Sie als Quelle verwenden möchten, können Sie die AsRandomAccessStream-Erweiterungsmethode verwenden, um ihn in den IRandomAccessStream-Typ zu konvertieren, der als Eingabe für SetSourceAsync benötigt wird.

In Situationen mit geringem Arbeitsspeicher (wahrscheinlich bei Telefonen mit geringerem Arbeitsspeicher) ist es möglich, dass eine Ausnahme mit der Meldung "Das Bild ist nicht erkannt" und einem HRESULT von 0x88982F60 ausgelöst wird. Obwohl diese Ausnahme normalerweise auf ungültige Daten hinweist, ist die Ursache für die Ausnahme wahrscheinlich ein geringer Arbeitsspeicher, wenn ihre App sich dem Arbeitsspeicherlimit nähert. In diesem Fall wird empfohlen, dass Sie Arbeitsspeicher freigeben und es erneut versuchen.

Gilt für:

Weitere Informationen