首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图在视图模型中保存我的流

试图在视图模型中保存我的流
EN

Stack Overflow用户
提问于 2020-01-29 18:41:23
回答 1查看 96关注 0票数 1

我很难把我选好的照片从我的大房子里救出来。这就是我在尝试的。

代码语言:javascript
复制
Stream stream = _stream = await DependencyService.Get<IPhotoPickerService>().GetImageStreamAsync();

if (stream != null)
{
    ItemPic = (StreamImageSource)ImageSource.FromStream(() => stream);
}

_stream也是一个流,图像显示在我的应用程序中,但是我的_stream字段是空的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-29 18:54:31

我假设您正在尝试使用_stream字段缓存流,以供将来使用。由于.net Stream类实现了IDisposable接口,所以它依赖您手动释放这个非托管资源(与垃圾收集器为您做的不同)。

我更愿意缓存底层流数据并释放流,而不是试图保存它。

代码语言:javascript
复制
using(Stream stream = await DependencyService.Get<IPhotoPickerService>().GetImageStreamAsync())
{
   if (stream != null)
   {
      // save stream data as an byte array 
      _streamData = ReadBytes(stream);
      ItemPic = GetImageSource(_streamData);
   }
}

// a helper method to get the stream data
private byte[] ReadBytes(Stream input)
{
    using (MemoryStream ms = new MemoryStream())
    {
        input.CopyTo(ms);
        return ms.ToArray();
    }
}

// a helper method to create an image from an byte array
private ImageSource GetImageSource(byte[] data)
{
   return ImageSource.FromStream(() => new MemoryStream(data)
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59973586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档