Понимание потоков и их времени жизни (очистка, удаление, закрытие)

Примечание: я уже прочитал следующие два вопроса:

Можете ли вы объяснить концепцию потоков?

C # с использованием потоков

Я кодирую в C #

Почти во всех примерах кода, использующих потоки, почти всегда вызываются .Dispose (), .Flush (), .Close ().Что происходит в концепции потока?Если я не удаляю поток, который хранил в переменной, мое приложение где-то просачивается?Почему мне нужно вызывать любую из этих функций? Я видел примеры кода, которые не делают этого и все еще выполняют свою работу (безочевидный поломка)

В настоящее время я создаю класс в моем приложении, который содержит основной метод (давайте вызовем егоGetStream()) который возвращает поток черезmyWebRequest.GetResponse().GetResponseStream()

Основной методGetStream() возвращаетStream объект, который можно использовать для любой операции, для которой требуется поток (StreamReader, Bitmap () и т. д.).

Есть ли способ автоматически удалять поток после его последнего использования (сборщик мусора?), Не заставляя никого вызывать.GetStream() вручную утилизировать его?

Как вы, вероятно, можете сказать, мои вопросы расплывчаты и носят общий характер. Мое понимание потоков не является надежным, поэтому любые ссылки на полезные статьи, которые предлагают более углубленный взгляд на потоки, чем может предложить вопрос SO, будут приветствоваться.