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 訊息。 雖然此例外狀況通常表示不正確的資料,但如果您的 app 接近其記憶體限制,則例外狀況的原因可能是記憶體不足。 在此情況下,建議您釋放記憶體,然後再試一次。