Нужно передать файл стрим, корректно его создать и освободить
Есть у меня метод генерации графика и сохранения его в 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, отправить его и задиспозить?