Je suis en train de mettre en place un service d'abonnement pour envoyer des rapports à diverses personnes dans notre entreprise sur un calendrier. Je prévois d'envoyer les rapports par courrier électronique, le système de rapport que j'utilise est capable d'exporter en flux PDF (plutôt que d'écrire des fichiers temporaires). La plupart des gens recevront plus d'un rapport, donc je suis en train de les attacher à un e-mail faire quelque chose commeC# List <Stream> disposer/fermer
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);
Ce que je ne suis pas sûr au sujet est devrais-je vider et fermer le flux juste après l'avoir ajouté à la liste Est-ce que ça va aller? Ou ai-je besoin de boucler la liste pour la rincer et la jeter? J'essaie d'éviter toute fuite de mémoire possible.
pwetty! +1 15chars – Quibblesome
Vous pourriez rendre StreamCollection générique, alors il peut être utilisé pour n'importe quel objet IDisposable – thecoop
Comme cette approche l'utilisera – PeteT