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