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;
}
注釈
同様の SetSource メソッドではなく、非同期の SetSourceAsync メソッドを呼び出してイメージ ソースを設定すると、UI スレッドがブロックされるのを回避できます。 SetSourceAsync 動作は、イメージ ソースをマークアップの URI として設定するときにシステムが内部的に行う動作と似ています。システムは取得とデコードを待機しませんが、イメージ ソースが使用可能になるとレイアウトが再度実行されます。 同等のマークアップ解析では 非同期 インフラストラクチャは公開されませんが、SetSourceAsync メソッドでは公開されます。 async、await、または IAsyncAction 値を操作する方法の詳細については、「C# または Visual Basic で非同期 API を呼び出す」を参照してください。
SetSourceAsync 呼び出しが既に進行中に SetSourceAsync、SetSource、または UriSource を使用してアプリがイメージ ソースを再度変更した場合、保留中の SetSourceAsync アクションは TaskCanceledException をスローし、Status を Canceled に設定します。
ソースとして使用する Microsoft .NET ストリームがある場合は、 AsRandomAccessStream 拡張メソッドを使用して、SetSourceAsync の入力として必要な IRandomAccessStream 型に変換できます。
メモリ不足の状況 (低メモリの電話の場合が多い) では、"イメージが認識されていません" というメッセージと 0x88982F60 の HRESULT で例外が発生する可能性があります。 通常、この例外は不適切なデータを示しますが、アプリがメモリ制限に近い場合、例外の原因はメモリ不足である可能性があります。 その場合は、メモリを解放してから、もう一度お試しください。