Может произойти любое количество вещей, потому что класс, если он свободен, может реализовать Dispose
, однако они выбирают.
Обычно выбрасываются не управляемые ресурсы (которые обычно сами о себе заботятся), а неуправляемые, такие как соединения с базами данных, блокировки файлов и т. Д.
Вообще говоря, Disposed вызывается в финализаторе, когда к нему подходит сборщик мусора, однако, например, если вы пишете в файл и не закрываете его (что делает Dispose), вы запрещаете что-либо другим программам (включая другие части вашего кода в той же программе) от открытия этого файла (кроме, возможно, в режиме только для чтения).
Если вы удерживаете соединения с базой данных дольше, чем необходимо, вы можете установить максимальное количество открытых соединений и прекратить использование приложением базы данных.
В целом, если класс реализует IDisposable
, он говорит, что у меня есть кое-что, что нужно утилизировать, и оно должно быть утилизировано как можно скорее, не дожидаясь появления сборщика мусора.