Хорошо понимать, что на самом деле здесь происходит. BackgroundWorker
не загружает никаких файлов. Все, что делает BackgroundWorker
, это вызывает событие в фоновом потоке. Вы должны обработать это событие, и тогда любой код, который вы поместите в свой обработчик события, будет выполнен в этом фоновом потоке. Обработчик событий в вашем коде является частью вашей формы, поэтому загружает файлы ваша форма, а не BackgroundWorker
.
Если вы собираетесь придерживаться BackgroundWorker
, тогда у вас будет два варианта , Либо вы будете загружать файлы последовательно, один за другим, либо загружать их параллельно, для чего потребуется один BackgroundWorker
на файл. Использование нескольких BackgroundWorkers
немного громоздко, но хорошо, что вы можете использовать один и тот же метод для обработки всех событий DoWork
. Вы просто передадите URL, когда позвоните RunWorkerAsync
. Если вы просто используете один BackgroundWorker
, то напишите метод, который выполняет одну загрузку, а затем вызовите его четыре раза.
При этом, вероятно, лучше go с параметром Task
, предложенным в комментарии.