Sobes.tech
Junior — Middle

Por que, em alguns casos, é necessário terminar explicitamente o trabalho com tarefas, apesar da existência de um recolhedor de lixo automático?

sobes.tech IA

Resposta da IA

O recolhimento de lixo automático (GC) em C# liberta a memória ocupada por objetos que já não são utilizados, mas não gere outros recursos, como ficheiros, ligações de rede ou descritores.

Por isso, é importante terminar explicitamente esses recursos implementando a interface IDisposable e chamando o método Dispose(). Isto garante a libertação atempada de recursos, evita fugas e melhora o desempenho.

Exemplo de uso de using para chamar automaticamente Dispose:

using (var file = new FileStream("file.txt", FileMode.Open))
{
    // Trabalhar com o ficheiro
}
// Aqui, o ficheiro fecha-se automaticamente

Assim, apesar do GC, a libertação explícita de recursos é necessária para uma gestão correta dos recursos não geridos.