Я не верю, что FromAsyncPattern
может закрыть ваши ресурсы, даже если бы захотел. У него недостаточно информации о том, как объект, для которого он выполняет асинхронные вызовы (в данном случае HttpWebRequest), или объект, возвращенный из асинхронных вызовов (в данном случае WebResponse), будут использоваться в другом месте, чтобы знать, когда он будет сохранен Dispose
.
Тем не менее, вы все равно можете закрыть ресурсы вручную без дополнительных вызовов Do
и Select
. Просто измените Select
в первом примере на:
.Select(r => { using (r) { return r.ContentLength; }});
Единственный Rx-оператор, который будет вызывать Dispose
, о котором я знаю, это Observable.Using
. Однако, исходя из его подписи, было не сразу очевидно, как или если это могло бы применяться здесь, поэтому я пошел с вышеупомянутым подходом.