BitmapSource.SetSourceAsync(IRandomAccessStream) Metode

Definisi

Mengatur gambar sumber untuk BitmapSource dengan mengakses aliran dan memproses hasilnya secara asinkron.

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

Sumber aliran yang mengatur nilai sumber gambar.

Mengembalikan

Handler asinkron yang dipanggil ketika operasi selesai.

Atribut

Contoh

Contoh ini ditampilkan di sini menggunakan aliran file (diperoleh menggunakan pemilih file, tidak ditampilkan) untuk memuat sumber gambar dengan memanggil SetSourceAsync. Pemilih file, streaming, dan panggilan ke SetSourceAsync semuanya asinkron. Kode yang ditampilkan di sini berasal dari sampel kode yang lebih besar, sampel gambar SDK XAML.

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

Keterangan

Mengatur sumber gambar dengan memanggil metode SetSourceAsync asinkron daripada metode SetSource serupa menghindari pemblokiran utas UI. Perilaku SetSourceAsync mirip dengan apa yang dilakukan sistem secara internal ketika Anda mengatur sumber gambar sebagai URI dalam markup: sistem tidak menunggu untuk mengambil dan mendekode, tetapi menjalankan tata letak lagi setelah sumber gambar tersedia. Penguraian markup yang setara tidak mengekspos infrastruktur asinkron , tetapi metode SetSourceAsync melakukannya. Untuk informasi selengkapnya tentang cara menggunakan asinkron, menunggu, atau cara bekerja dengan nilai IAsyncAction , lihat Memanggil API asinkron di C# atau Visual Basic.

Jika aplikasi mengubah sumber gambar lagi melalui SetSourceAsync, SetSource , atau UriSource saat panggilan SetSourceAsync sudah berlangsung, tindakan SetSourceAsync yang tertunda akan melempar TaskCanceledException dan mengatur Status ke Dibatalkan.

Jika Anda memiliki aliran Microsoft .NET yang ingin Anda gunakan sebagai sumber, Anda dapat menggunakan metode ekstensi AsRandomAccessStream untuk mengonversinya ke jenis IRandomAccessStream yang diperlukan sebagai input untuk SetSourceAsync.

Dalam situasi memori rendah (kemungkinan besar pada ponsel memori lebih rendah), ada kemungkinan pengecualian dinaikkan dengan pesan "Gambar tidak dikenali" dan HRESULT 0x88982F60. Meskipun pengecualian ini biasanya menunjukkan data yang buruk, jika aplikasi Anda mendekati batas memorinya maka penyebab pengecualian kemungkinan adalah memori rendah. Dalam hal ini, kami sarankan Anda membebaskan memori dan mencoba lagi.

Berlaku untuk

Lihat juga