Je crée un service d'abonnement pour envoyer des rapports à diverses personnes de notre société sur une planification. Je prévois d'envoyer un courrier électronique aux rapports, le système de reporting que j'utilise est capable d'exporter en tant que flux PDF (plutôt que d'écrire des fichiers temporaires). La plupart des gens recevront plus d'un rapport pour que j'essaie de les attacher à tous un courrier électronique à faire quelque chose comme Ce que je suis incertain, c'est devrais-je flushing et fermer le flux juste après l'ajout À la liste, cela ira-t-il bien? Ou dois-je faire boucler la liste après avoir flush et disposer? J'essaie d'éviter toute fuite de mémoire possible. P> p>
5 Réponses :
Il n'y a pas de mal à ce que ce soit dans Fush () / Fermer (). Si vous voulez être absolument sûr, alors vous devriez faire une déclaration de cette façon, des exceptions n'affecteront pas votre code. P> p>
dépend de si les flux sont utilisés plus tard lorsque la pièce jointe est créée. Je suppose qu'ils sont lesquels ils veulent vouloir disposer des ruisseaux à la fin. P>
N'oubliez pas d'essayer-enfin ceci. Sinon, ils ne seront pas disposés si une exception se produit. P>
Je ne faisais que quitter le code simple pour l'exemple, savez-vous essayer des enfin et tout cela.
Pourquoi ne pas créer une classe de scollection qui implémente Idisposable: dans la méthode de jet de cette classe, vous pouvez boucler tous les flux et fermer correctement chaque flux. Ensuite, votre code ressemblerait à: p>
Vous pouvez faire des streamcollection génériques, puis il peut être utilisé pour n'importe quel objet iDisposable.
Comme cette approche l'utilisera
Je ne vois pas la logique dans la fermeture des flux juste après l'avoir ajouté à la liste. Sur la base du code que vous avez fourni, les références à ces flux sont utilisées à d'autres endroits. Si les ruisseaux sont fermés, à quoi servent-ils? P>
Vous pouvez créer un programme de vente que vous pouvez envelopper dans une instruction utilisant: