Во-первых, вызывая методы Dispose, он никоим образом не намекает GC на необходимость выполнения каких-либо специальных действий. Утилизация - это обычный метод, как и любой другой.
Волшебный соус - это то, что делает Dispose, а именно освобождает ресурсы, которые больше не нужны.
Правило № 1 для объектов IDisposable - вызывать Dispose, когда вы закончите с ними. Да, GC может в конечном итоге очистить память, но если объекты все еще связаны с другими, которые все еще используются, они останутся. Утилизация также очищает неуправляемые ресурсы, которые имеют решающее значение, такие как подключения к БД, файловые дескрипторы, блокировки и т. Д. Их, безусловно, необходимо закрыть как можно скорее.
Короче говоря, если вы создали экземпляр объекта IDisposable, избавьтесь от него по завершении.
Да, стоит вызвать Dispose, но, как я уже говорил ранее, это означает, что объекты могут быть не связаны друг с другом, что позволяет GC освободить их при следующем запуске. Это также означает, что неуправляемые ресурсы могут быть немедленно освобождены. Еще одна победа. Утечки памяти и ресурсов могут сильно снизить производительность, а также может произойти сбой приложения, если он станет слишком экстремальным!
Возможно, разработчик защищал важные ресурсы, поэтому, пожалуйста, не пытайтесь угадать его!
Профилирование - ваш друг здесь. Если производительность воссоздания этих объектов является проблемой, кэшируйте их, но все же будьте готовы избавиться от них, когда закончите.