Utilisation correcte de l'interface IDisposable en C# : comment éviter les fuites mémoire ?
Bonjour à tous ! Je suis un développeur C# débutant et je n'arrive pas à comprendre l'interface IDisposable. J'ai lu la documentation, mais en pratique j'ai toujours des questions.
J'ai une classe qui travaille avec des fichiers et des connexions réseau. J'ai implémenté IDisposable, mais je ne suis pas sûr de le faire correctement. Voici un exemple de mon code :
public class FileProcessor : IDisposable
{
private FileStream _fileStream;
private NetworkStream _networkStream;
private bool _disposed = false;
public void ProcessFile(string path)
{
_fileStream = new FileStream(path, FileMode.Open);
// un traitement quelconque
}
public void Dispose()
{
if (_fileStream != null)
_fileStream.Dispose();
if (_networkStream != null)
_networkStream.Dispose();
}
}
J'appelle Dispose() manuellement, mais j'ai entendu dire qu'il faut utiliser le pattern Dispose(bool). Cela me trouble aussi :
1. Faut-il appeler GC.SuppressFinaliz