Я заметил, что System.Threading.Thread реализует финализатор, но не IDisposable. Рекомендуемая практика - всегда реализовывать IDisposable при реализации финализатора. Джеффри Рихтер написал , что руководство "очень важно и должно всегда соблюдаться без исключения".
Так почему же Thread не реализует IDisposable? Кажется, что реализация IDisposable была бы неразрывным изменением, которое позволило бы детерминированную очистку финализируемых ресурсов Thread.
И связанный с этим вопрос: поскольку поток является финализируемым, нужно ли хранить ссылки на запущенные потоки, чтобы предотвратить их финализацию во время выполнения?