語言

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 方法會。 想了解更多如何使用 async、wait 或如何操作 IAsyncAction 值的資訊,請參考 C# 或 Visual Basic 中的非同步 API。

如果應用程式在 SetSourceAsync、 SetSource 或 UriSource 再次更改影像來源,而 SetSourceAsync 呼叫正在進行中,待執行的 SetSourceAsync 動作會拋出 TaskCanceledException ,並將 狀態 設為 取消。

如果你有一個想用作來源的Microsoft .NET串流,可以用 AsRandomAccessStream 擴充方法將其轉換成 SetSourceAsync 所需的 IRandomAccessStream 類型。

在記憶體不足的情況下(多數是在記憶體較低的手機上),可能會提出例外,顯示「影像未識別」訊息,並顯示 HRESULT 為 0x88982F60。 雖然此例外通常表示資料品質不佳,但若應用程式接近記憶體限制,異常原因很可能是記憶體不足。 在這種情況下,我們建議你釋放記憶體再試一次。

適用於

另請參閱