共用方式為


BitmapSource.SetSourceAsync(IRandomAccessStream) 方法

定義

藉由存取資料流程並以非同步方式處理結果,來設定 BitmapSource 的來源影像。

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

參數

streamSource
IRandomAccessStream

設定影像來源值的資料流程來源。

傳回

作業完成時會呼叫非同步處理常式。

屬性

範例

這裡顯示的這個範例會使用檔案串流 (使用檔案選擇器取得,而不是藉由呼叫 SetSourceAsync 來載入影像來源) 。 檔案選擇器、資料流程和對 SetSourceAsync 的呼叫都是非同步。 這裡顯示的程式碼來自較大的程式碼範例 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;
}

備註

藉由呼叫非同步 SetSourceAsync 方法來設定影像來源,而不是類似的 SetSource 方法,可避免封鎖 UI 執行緒。 SetSourceAsync 行為類似于當您在標記中將影像來源設定為 URI 時,系統在內部執行的行為:系統不會等候擷取和解碼,但會在映射來源可用後再次執行版面配置。 標記剖析對等專案不會公開 非同步 基礎結構,但 SetSourceAsync 方法會公開。 如需如何使用 asyncawait或如何使用 IAsyncAction 值的詳細資訊,請參閱 在 C# 或 Visual Basic 中呼叫非同步 API

如果應用程式在 SetSourceAsync 呼叫正在進行時,再次透過 SetSourceAsync、 SetSourceUriSource 變更映射來源,擱置的 SetSourceAsync 巨集指令會擲回 TaskCanceledException 並將 Status 設定為 [已取消]。

如果您有想要作為來源使用的 Microsoft .NET 資料流程,您可以使用 AsRandomAccessStream 擴充方法,將它轉換成 SetSourceAsync 輸入所需的 IRandomAccessStream 類型。

在記憶體不足的情況下, (最有可能在記憶體較低的手機上) ,可能會引發例外狀況訊息「無法辨識映射」和0x88982F60的 HRESULT。 雖然此例外狀況通常表示不正確的資料,但如果您的應用程式接近其記憶體限制,則例外狀況的原因可能是記憶體不足。 在此情況下,建議您釋放記憶體,然後再試一次。

適用於

另請參閱