BitmapSource.SetSourceAsync(IRandomAccessStream) Methode

Definition

Legt das Quellbild für eine BitmapSource fest, indem er auf einen Datenstrom zugreift und das Ergebnis asynchron verarbeitet.

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

Gibt zurück

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

Attribute

Beispiele

In diesem Beispiel wird ein Dateidatenstrom (abgerufen mit einer Dateiauswahl, nicht angezeigt) 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 BEISPIEL für SDK-XAML-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

Wenn Sie eine Bildquelle festlegen, indem Sie die asynchrone SetSourceAsync-Methode anstelle der ähnlichen SetSource-Methode aufrufen, wird verhindert, dass der UI-Thread blockiert wird. Das SetSourceAsync-Verhalten ähnelt dem, was das System intern ausführt, wenn Sie eine Bildquelle im Markup als URI festlegen: Das System wartet nicht auf das Abrufen und Decodieren, aber es wird das Layout erneut ausgeführt, sobald die Bildquelle verfügbar ist. Die Markupanalyseentsprechung macht die asynchrone Infrastruktur nicht verfügbar, aber die SetSourceAsync-Methode führt dies aus. Weitere Informationen zur Verwendung von asynchronen, 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 ein SetSourceAsync-Aufruf bereits ausgeführt wird, löst die ausstehende SetSourceAsync-Aktion eine TaskCanceledException aus und legt den Status auf "Abgebrochen" 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 (höchstwahrscheinlich auf Telefonen mit geringerem Arbeitsspeicher) ist es möglich, dass eine Ausnahme mit der Meldung "Das Bild ist nicht erkannt" und ein HRESULT von 0x88982F60 ausgelöst werden kann. Obwohl diese Ausnahme normalerweise schlechte Daten angibt, liegt die Ursache der Ausnahme wahrscheinlich bei geringem Arbeitsspeicher, wenn ihre App nahe an der Speichergrenze liegt. In diesem Fall wird empfohlen, Arbeitsspeicher freizugeben und es erneut zu versuchen.

Gilt für:

Weitere Informationen