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 并将 “状态” 设置为 “已取消”。
如果有要用作源的 Microsoft .NET 流,可以使用 AsRandomAccessStream 扩展方法将其转换为作为 SetSourceAsync 输入所需的 IRandomAccessStream 类型。
在内存不足的情况下, (最有可能在内存不足的手机上) ,可能会引发异常并显示消息“无法识别图像”和 HRESULT 0x88982F60。 虽然此异常通常表示数据错误,但如果应用接近其内存限制,则异常的原因可能是内存不足。 在这种情况下,建议释放内存,然后重试。