Я думал, что GC вызовет Dispose в конечном итоге, если ваша программа не будет, но вы должны вызвать Dispose() в своей программе, чтобы сделать дефрагментацию очистки.
Однако из моей маленькой тестовой программы я вообще не вижу Dispose для вызова...
public class Test : IDisposable
{
static void Main(string[] args)
{
Test s = new Test();
s = null;
GC.Collect();
Console.ReadLine();
}
public Test()
{
Console.WriteLine("Constructor");
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
//Вывод - это просто "Конструктор", я не получаю "Dispose", как я ожидал. Что?
РЕДАКТИРОВАТЬ: Да, я знаю, что я должен вызвать Dispose() - я выполняю стандартный шаблон при использовании одноразовых объектов. Мой вопрос возникает из-за того, что я пытаюсь найти утечку в чей-то код elses, которым управляет С++ (другой уровень сложности, который был бы хорошим предметом другого потока).