Лучшим документом о потоке, который я когда-либо нашел, был этот http://www.albahari.com/threading/
Если можно, проблема простых примеров в том, что они часто слишком просты. Как только вы закончите подсчет или сортировку в фоновых демонстрациях, вам, как правило, нужно обновить пользовательский интерфейс или аналогичный, и есть некоторые ошибки. Точно так же вам редко приходится сталкиваться с конфликтом ресурсов в простых примерах, и для того, чтобы потоки изящно ухудшались, когда ресурс недоступен (например, соединение Db), нужно подумать.
Концептуально вам нужно решить, как вы собираетесь распределять свою работу по потокам и сколько вы хотите. С управлением потоками связаны накладные расходы, и некоторые механизмы используют общий пул потоков, который может быть подвержен самому конфликту ресурсов (например, каждый раз, когда вы запускаете программу, которая просто отображает пустую форму, сколько потоков вы видите в диспетчере задач).
Таким образом, для вашего случая вы, потоки, выполняющие фактическую загрузку, должны сообщить, если они завершили, если они потерпели неудачу (и что это был за сбой). Контроллер должен иметь возможность справляться с ними и управлять процессами запуска / остановки и т. Д.
Наконец (почти), если предположить, что создание многопоточности увеличит производительность, это не всегда верно. Например, если вы разбили файл на сегменты, но он должен проходить по низкоскоростному каналу (скажем, ADSL), вы ограничены внешними силами, и никакие хитрости потоков не обойдут его. То же самое можно применить к обновлениям базы данных, веб-запросам, всему, что связано с большим количеством операций ввода-вывода и т. Д.
Несмотря на все это, я не пророк гибели. Ссылки здесь более чем достаточны, чтобы помочь вам достичь того, чего вы хотите, но имейте в виду, что одна из причин, по которой многопоточность кажется сложной, заключается в том, что она может быть:)
Если вам нужен больший контроль, чем у BackgroundWorker / Threadpool, но вы не хотите делать все сами, есть как минимум две очень хорошие библиотеки потоков халявы, разбросанные по всему месту (Wintellect & PowerThreading)
Приветствия
Simon