Я предполагаю, что вы пытаетесь кэшировать поток, используя поле _stream для дальнейшего использования. Поскольку класс. net Stream реализует интерфейс IDisposable , он полагается на то, что вы освободите этот неуправляемый ресурс вручную (в отличие от сборщика мусора, делающего это за вас).
Я бы предпочел кэшировать данные основного потока и избавиться от потока вместо того, чтобы пытаться удержать его.
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)
}