Как я могу отсоединить поток от чтения или записи потока? - PullRequest
5 голосов
/ 20 октября 2010

У меня есть класс, который принимает поток в качестве входных данных (в конструкторе).Он выводит содержимое из этого потока различными способами.

Однако я не хочу, чтобы мой объект отвечал за закрытие потока - это должно быть ответственностью вызывающего.Поэтому мне нужно закрыть мой StreamReader внутри моего класса, но я не могу закрыть основной поток.

Возможно ли это?

Ответы [ 2 ]

4 голосов
/ 20 октября 2010

Закрытие потокового ридера закроет основной поток.Обойти это невозможно.Однако единственная причина, по которой вам нужно закрыть , заключается в том, что основной поток также закрыт.Все остальное - это управляемый код.Это означает, что вы можете просто отказаться от своего потокового ридера, и все должно быть в порядке - при условии, что ваш вызывающий абонент не забывает закрывать свой поток, как должен.

3 голосов
/ 20 октября 2010

StreamReader s предназначены для полного и единоличного владения базовым потоком.

В частности, StreamReader будет произвольно читать вперед в потоке, чтобы заполнить внутренний буфер. (Это меня однажды укусило)

Если вам нужно поделиться потоком, вам, вероятно, не следует использовать StreamReader вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...