Avatar ·

Uso correcto de la interfaz IDisposable en C#: ¿cómo evitar fugas de memoria?

¡Hola a todos! Soy un desarrollador principiante de C# y no logro entender la interfaz IDisposable. Leí la documentación, pero en la práctica aún tengo dudas. Tengo una clase que trabaja con archivos y conexiones de red. Implementé IDisposable, pero no estoy seguro de hacerlo correctamente. Aquí hay un ejemplo de mi código:
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);
        // algún procesamiento
    }

    public void Dispose()
    {
        if (_fileStream != null)
            _fileStream.Dispose();
        if (_networkStream != null)
            _networkStream.Dispose();
    }
}
Llamo a Dispose() manualmente, pero he oído que se debe usar el patrón Dispose(bool). También me confunde: 1. ¿Es necesario llamar a GC.SuppressFinaliz