Закрывается ли поток, когда вы возвращаете его в WebOperationContext? - PullRequest
2 голосов
/ 03 апреля 2012

Я возвращаю некоторые изображения в виде потока как часть WebOperationContext.Current.CreateStreamResponse ()

Мне было интересно, обрабатывает ли платформа закрытие этого потока после его возвращения.Или если что-то нужно было сделать как часть ответа, чтобы правильно закрыть поток.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Итак, из того, что я обнаружил, CreateStreamResponse () возвращает Сообщение , которое реализует IDisposable, поэтому было бы лучше обернуть возвращаемый объект в оператор using.Это должно правильно обработать закрытие потока.

0 голосов
/ 26 февраля 2016

Реализация с использованием здесь не является сложностью, у меня была ситуация, когда возвращаемое содержимое было огромным (3 МБ), и поскольку я обернул WebOperationContext.Current.CreateStreamResponse () внутри оператора using, поток был закрыт до того, как содержимое было завершенотаким образом, ответ для клиента был пустым.

Все, что я сделал, это скопировал вывод потока в строку и использовал WebOperationContext.Current.CreateTextResponse () внутри использования wrap.

...