Необходимо позвонить EndRead () во ВСЕХ случаях?

В отношении асинхронного ввода-вывода с использованием (двунаправленного) NetworkStream MSDN говорит, что «EndRead должен вызываться один раз для каждого вызова BeginRead . "

Верно ли это даже для случаев, когда EndRead ()вызовет исключение, например, в случае, если NetworkStream был закрыт после того, как был запущен BeginRead ()?

Мне не нужны накладные расходы на выброс исключения, но я не хочу и утечка ОС драгоценные ресурсы, зарезервированные BeginRead ().

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

Я делаю это неправильно?

Спасибо!

7
задан Jason Kleban 17 June 2011 в 21:27
поделиться