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 方法公开。 有关如何使用 asyncawait 或如何使用 IAsyncAction 值的详细信息,请参阅 在 C# 或 Visual Basic 中调用异步 API

如果在 SetSourceAsync 调用已在进行时,应用通过 SetSourceAsync、SetSourceUriSource 再次更改图像源,则挂起的 SetSourceAsync 操作将引发 TaskCanceledException 并将 “状态” 设置为 “已取消”。

如果有要用作源的 Microsoft .NET 流,可以使用 AsRandomAccessStream 扩展方法将其转换为作为 SetSourceAsync 输入所需的 IRandomAccessStream 类型。

在内存不足的情况下, (最有可能在内存不足的手机上) ,可能会引发异常并显示消息“无法识别图像”和 HRESULT 0x88982F60。 虽然此异常通常表示数据错误,但如果应用接近其内存限制,则异常的原因可能是内存不足。 在这种情况下,建议释放内存,然后重试。

适用于

另请参阅