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