Я хочу загрузить файл во время отображения в пользовательском интерфейсе, когда идет загрузка. С WebRequest
у меня есть два варианта:
Используйте WebRequest.BeginGetResponse
и связанные с ним методы.
Преимущество: возможность отображать точный прогресс в байтах.
Недостаток: больше кода для записи. Поскольку синхронные и асинхронные методы не смешиваются, мне нужно будет использовать BeginGetResponse
, BeginRead
, BeginGetRequestStream
. Больше вещей для реализации вручную, включая буферы чтения, тайм-ауты.
Начать новый поток (или использовать пул потоков), использовать WebRequest.GetResponse
и связанные с ним методы.
Преимущество: без лишнего кода.
Недостаток: невозможно показать точный прогресс.
Поскольку загружаемые файлы довольно малы, отображение прогресса в байтах является преимуществом, но не критичным. Я что-то упускаю, если использую второй подход, функциональный и производительный?
Или, может, я пропустил широко используемую обертку более высокого уровня? (WebClient
не раскрывает свойства WebRequest
, поэтому он непригоден для меня, потому что мне нужно использовать куки и т. Д.)