Я настраиваю службу подписки для отправки отчетов различным людям в нашей компании по расписанию. Я планирую отправлять отчеты по электронной почте, и система отчетов, которую я использую, может экспортировать в виде потока PDF (вместо записи временных файлов). Большинство людей получат более одного отчета, поэтому я пытаюсь прикрепить их к одному письму, делая что-то вроде
List<Stream> reports = new List<Stream>();
//looping code for each users set of reports
Stream stream = ReportSource.ReportDocument.ExportToStream(PortableDocFormat)
reports.Add(stream);
stream.Flush(); //unsure
stream.Close(); //unsure
//end looping code
SmtpClient smtpClient = new SmtpClient(host, port);
MailMessage message = new MailMessage(from, to, subject, body);
foreach (Stream report in reports)
{
message.Attachments.Add(new Attachment(report, "application/pdf"));
}
smtpClient.Send(message);
В чем я не уверен, так это в том, что я должен очищать и закрывать поток сразу после добавления его в список. Или мне нужно потом зациклить список для очистки и удаления? Я пытаюсь избежать любой возможной утечки памяти.