Нужно передать файл стрим, корректно его создать и освободить

Есть у меня метод генерации графика и сохранения его в png

Вот этот метод успешно создает изображение, превращает его в стрим и отдает мне для отправки.

Stream GetStream()
{
  using (FileStream fileStream = File.OpenWrite("Area.png"))
      PngExporter.Export(plotModel1, (Stream)fileStream, 480, 300);


  FileStream stream = File.Open("Area.png", FileMode.Open, FileAccess.ReadWrite);

  return stream;
}

Все работает, но создавать файл на диске через стрим, чтобы потом превратить его в стрим обратно мне кажется какой-то порочной практикой.

Более того, я использую stream не внутри using, и вероятно после отправки он не освобождается, а значит наверное утекает память.

Другие же подходы не работают, выдавая ошибку

Выдает ошибку file must be non-empty

  Stream GetStream()
    {
            FileStream stream = File.Open("Area.png", FileMode.Create, FileAccess.ReadWrite);

            PngExporter.Export(plotModel1, (Stream)fileStream, 480, 300);

            return stream;
    }

Выдает ошибку Stream does not support reading.

 Stream GetStream()
 {
      FileStream stream = File.OpenWrite("Area.png")
      PngExporter.Export(plotModel1, (Stream)stream, 480, 300);


     return stream;
}

В итоге вопрос - как мне создавать FileStream для отправки правильно? Может так оно и надо, создавать файл в процессе? Или все таки это плохая практика, и есть простой способ создать FileStream, отправить его и задиспозить?


Ответы (0 шт):