BitmapSource.SetSourceAsync(IRandomAccessStream) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.