Я пишу программу, загружающую огромные объемы данных, и мне нужно ограничить ее вмешательством в веб-браузер и другие действия пользователя.
Загрузка состоит из многих файлов большого размера, которые передаются индивидуально, соединение должно быть стандартным HTTP POST (у меня нет контроля над сервером), и мне нужно управлять заголовками HTTP (сервер использует их для аутентификации и метаданные)
Важно, чтобы загрузка возобновлялась на полной скорости, когда пользователь больше не пользуется Интернетом, потому что в противном случае он никогда не закончится (я ожидаю, что он будет работать в течение недели или более на полной скорости для завершения).
Я хочу решить эту проблему, сделав так, что мой HTTP-соединение имеет низкий приоритет, обнаружение открытых окон браузера и замедление не решают проблему, потому что (а) пользователь может использовать не-браузерное приложение (FTP, твиттер-клиент, электронная почта и т.д.) и (б) я не хочу замедляться, если есть открытое окно в режиме ожидания.
Я нашел BITS, но я думаю, что это не касается меня, так как мне нужно, чтобы он был стандартным HTTP POST.
Я использую .net 3.5, программа написана на С#, и я в настоящее время использую HttpWebRequest для загрузки.
Уточнение:. Я пишу потребительское программное обеспечение, которое будет работать на домашнем компьютере клиентов. Мои бета-тестеры жалуются, что интернет работает медленно, когда они запускают мою программу (понятно, поскольку я использую всю их пропускную способность), поэтому я хочу уделять более высокий приоритет другим программам, поэтому их интернет перестает быть медленным.
Нет никакой привлекательной сетевой инфраструктуры, которая может приоритизировать пакеты в сети, и ни одна ИТ-команда не сможет устанавливать и настраивать что-либо, я ожидаю, что у большинства клиентов будет дешевый беспроводной маршрутизатор, который они получили бесплатно от своего интернет-провайдера.