J'ai une classe DocumentGenerator
qui enveloppe un MemoryStream
. J'ai donc implémenté IDisposable
sur la classe.Comment puis-je disposer de mon flux de fichiers lors de l'implémentation d'un téléchargement de fichier dans ASP.NET?
Je ne peux pas voir comment/où je peux éventuellement le jeter.
Ceci est mon code actuel, qui effectue un téléchargement de fichier dans MVC:
using (DocumentGenerator dg = DocumentGenerator.OpenTemplate(path))
{
/* some document manipulation with the
DocumentGenerator goes here ...*/
return File(dg.GetDocumentStream(), "text/plain", filename);
}
Cette erreur que le flux est fermé/disposé avant que le contrôleur a fini avec elle. Comment puis-je m'assurer que mes ressources sont correctement éliminées dans cette situation?
EDIT: Mon implémentation de IDisposable
actuellement ne dispose que du MemoryStream
. Je sais que ce n'est pas une bonne implémentation, je l'ai juste utilisé comme test. Y a-t-il quelque chose de différent que je pourrais faire ici pour le faire fonctionner?
public void Dispose()
{
_ms.Dispose();
_ms = null;
}
Pouvez-vous nous montrer l'implémentation d'IDisposable, s'il vous plaît? – DHN
Est-ce que '_ms' est le même que celui que vous obtenez après avoir appelé' GetDocumentStream'? –
@ Jordão: oui c'est correct, d'où le problème. – fearofawhackplanet