Если вы ссылаетесь на другой объект из финализатора, вы не знаете, если , что объект уже завершен - и как он будет себя вести, если будет завершен. (Я не знаю, выполняет ли какой-либо текущий CLR несколько потоков финализатора, но другая страшная возможность заключается в том, что он находится в процессе финализации при запуске финализатора.)
Все, что вам нужно сделать в финализаторе, - освободить неуправляемые ресурсы, которыми вы владеете напрямую. Если вы ссылаетесь на другие управляемые типы, которые владеют ресурсами, позвольте им выполнять свою работу в их финализаторах.