6
votes

C # Liste Dispose / Fermer

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 xxx

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.


0 commentaires

5 Réponses :


0
votes

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 à l'aide de instruction: xxx

de cette façon, des exceptions n'affecteront pas votre code.


0 commentaires

1
votes

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.

N'oubliez pas d'essayer-enfin ceci. Sinon, ils ne seront pas disposés si une exception se produit.


1 commentaires

Je ne faisais que quitter le code simple pour l'exemple, savez-vous essayer des enfin et tout cela.



23
votes

Pourquoi ne pas créer une classe de scollection qui implémente Idisposable: xxx

dans la méthode de jet de cette classe, vous pouvez boucler tous les flux et fermer correctement chaque flux. Ensuite, votre code ressemblerait à: xxx


2 commentaires

Vous pouvez faire des streamcollection génériques, puis il peut être utilisé pour n'importe quel objet iDisposable.


Comme cette approche l'utilisera



1
votes

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?


0 commentaires

5
votes

Vous pouvez créer un programme de vente que vous pouvez envelopper dans une instruction utilisant: xxx


0 commentaires