Avatar ·

Uso correto da interface IDisposable em C#: como evitar vazamentos de memória?

Olá a todos! Sou um desenvolvedor C# iniciante e não consigo entender a interface IDisposable. Li a documentação, mas na prática ainda tenho dúvidas. Tenho uma classe que trabalha com arquivos e conexões de rede. Implementei IDisposable, mas não tenho certeza se estou fazendo isso corretamente. Aqui está um exemplo do meu 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);
        // algum processamento
    }

    public void Dispose()
    {
        if (_fileStream != null)
            _fileStream.Dispose();
        if (_networkStream != null)
            _networkStream.Dispose();
    }
}
Chamo Dispose() manualmente, mas ouvi dizer que é necessário usar o padrão Dispose(bool). Também me confunde: 1. É necessário chamar GC.SuppressFinaliz