BitmapSource.SetSourceAsync(IRandomAccessStream) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
藉由存取資料流程並以非同步方式處理結果,來設定 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、 await或如何使用 IAsyncAction 值的詳細資訊,請參閱 在 C# 或 Visual Basic 中呼叫非同步 API。
如果應用程式在 SetSourceAsync 呼叫正在進行時,再次透過 SetSourceAsync、 SetSource 或 UriSource 變更映射來源,擱置的 SetSourceAsync 巨集指令會擲回 TaskCanceledException 並將 Status 設定為 [已取消]。
如果您有想要作為來源使用的 Microsoft .NET 資料流程,您可以使用 AsRandomAccessStream 擴充方法,將它轉換成 SetSourceAsync 輸入所需的 IRandomAccessStream 類型。
在記憶體不足的情況下, (最有可能在記憶體較低的手機上) ,可能會引發例外狀況訊息「無法辨識映射」和0x88982F60的 HRESULT。 雖然此例外狀況通常表示不正確的資料,但如果您的應用程式接近其記憶體限制,則例外狀況的原因可能是記憶體不足。 在此情況下,建議您釋放記憶體,然後再試一次。