Вы не можете, в основном.Это не может быть вашим обратным вызовом.Более того, было бы бессмысленно быть вашим обратным вызовом, потому что на самом деле ничто не может использовать возвращаемый поток.Что вы собираетесь делать с потоком после запуска обратного вызова?
Достаточно просто создать обратный вызов, который просто вызывает ваш метод FinishWebRequest
, но это отбросит поток, не оставляя вас в лучшем положении...
(Лично я, кстати, не стал бы полагаться на ContentLength - он не всегда установлен. Я бы просто поддерживал небольшой буфер, в который вы читали, а затем записывал прямо в поток памяти. Если вы 'Используя .NET 4, вы можете использовать новый метод Stream.CopyTo
, чтобы упростить жизнь. Кроме того, WebResponse
реализует IDisposable
, так что для этого у вас должен быть оператор using
.)