Нет никакого волшебства в написании метода Dispose. Это ничем не отличается от любого другого метода. Если вы не позвоните, система не сделает это за вас.
КРОМЕ:
Если вы действительно хотите убедиться, что эти драгоценные ресурсы очищены должным образом, вам также необходимо создать некоторые меры безопасности для ситуаций, когда GC попадает к вашему объекту, даже если метод Dispose не вызывался обычным способом.
Способ сделать это - также вызвать его из деструктора объекта, и когда вы это делаете, есть несколько вещей, на которые стоит обратить внимание. Прежде всего, когда Dispose запускается из деструктора, это происходит в потоке, отличном от основного потока вашего приложения. Также вы не можете использовать объекты, на которые ссылаются ваши объекты, к тому времени, когда они могут быть собраны.