Si j'ai une classe avec les membres de flux de fichiers comme ceci:Comment fermer un objet de flux StreamReader/StreamWriter en tant que membre de la classe?
public class FooBar
{
private StreamReader reader;
private StreamWriter writer;
public FooBar(string readerFilePath, string writerFilePath)
{
reader = new StreamReader(readerFilePath);
writer = new StreamWriter(writerFilePath);
}
...
}
alors comment puis-je fermer ces flux?
Il semble qu'ils soient fermés par défaut lors de la destruction de classe, mais je dois alors utiliser writer.Flush()
ce qui ne sonne pas bien.
FooBar devrait mettre en œuvre IDisposable. Voir [Implémenter IDisposable correctement] (https://msdn.microsoft.com/fr-fr/library/ms244737.aspx?f=255&MSPPError=-2147217396) et [Implémenter IDisposable correctement] (https://stackoverflow.com/a/18337005/2066142) – KiwiPiet
Je ne comprends toujours pas la raison derrière l'interface IDisposable si je dois appeler explicitement la méthode Dispose(). Dans mon cas particulier, je ne peux pas utiliser le mot clé 'using'. Si j'essaie d'appeler 'writer.Close()' dans le destructeur (comme je le ferais en C++), j'obtiens une exception indiquant que le flux a déjà été fermé. –
Peut-être que je dois apprendre comment le garbage collector fonctionne ... –