Мне было поручено работать с системой очередей загрузки, но я немного запутался, с чего начать.
По сути, нам нужно иметь что-то вроде менеджера закачек (но не полностью). У нас есть около 20-100 файлов для загрузки, мы даем пользователю пользовательский интерфейс (со списком), чтобы он мог приостанавливать, останавливать или перемещать приоритетные задания.
Что меня смущает, так это структура данных, которую нужно использовать. Приоритетная очередь кажется мне подходящим вариантом моего исследования, но я не совсем понимаю, как заставить его работать. Есть ли у меня фоновый поток, который заглядывает в очередь, выбирает следующую задачу и переносит ее вперед? Мне также нужно обеспечить прогресс при загрузке файлов - они довольно большие, иногда 120 МБ (но локально, поэтому не более 10 минут).
Иногда им нужно приостановить работу и поставить работу выше в очереди, поскольку это считается срочным.
Это не менеджер загрузок, так что никаких проблем с регулированием и т.д. Как люди пишут такие вещи?
Я думал о том, чтобы иметь интерфейс, такой как IDownloadTask, который описывает задачу, которую нужно выполнить, иметь несколько свойств и событие, чтобы показать ее прогресс (который связывается при выполнении задач).
Затем поместите этот IDownloadTask в очередь с приоритетом. Фоновый рабочий забирает его (я думаю, нужно будет синхронизировать PriorityQUeue), а затем выполняет метод .Execute () в реализации интерфейса в отдельном потоке.
Это звучит разумно? Есть ли конкретные примеры, которые кто-нибудь может мне показать где-нибудь?
EDIT
Ух, спасибо за ответ и за доверие, должен отметить, что я использую .NET 2.0 (мы не можем двигаться дальше из-за требований совместимости Windows для Windows 9x).