Определить, когда поток закрыт - PullRequest
3 голосов
/ 01 апреля 2011

Я пытаюсь реализовать класс сетевого протокола с интерфейсом, подобным WebRequest , в частности, с потоком ввода, возвращаемым GetRequestStream , однако у меня возникают трудности с определением, когда поток запроса завершено, так как в нем нет событий (удаление и т. д.).

Как я могу контролировать поток, чтобы определить, когда он закрыт / удален? Является ли мой единственный выбор, чтобы обернуть его в класс, который реализует Stream ?


В частности, я реализую FTP с некоторыми функциями, которых нет в FtpWebRequest (SITE, ALLOC и т. Д.). Мне нужно знать, когда поток данных закрыт / завершен, чтобы я мог проверить поток команд на наличие сообщения об ошибке или об ошибке.

1 Ответ

3 голосов
/ 01 апреля 2011

Я полагаю, что причина, по которой поток не предоставляет событие для удаления / закрытия, заключается в том, что единственный человек, которого нужно знать, это владелец этого события - и владелец будет вызывать его сам.

Удаление потока должно быть явной операцией , следовательно, событие не имеет особого смысла.Сказав это, владелец потока может представить событие и сообщить своим клиентам о завершении операции.

Также наличие события означает, что поток может быть разделен между несколькими клиентами, что, опять же, я считаю, не является хорошей практикой.

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