каково различие между, создают поток с помощью thread.start и с помощью второстепенного рабочего?
Предполагая, что вы говорите о .NET, a BackgroundWorker использует поток из пула потоков (он не создает новый поток, но может блокировать, если в пуле нет доступных потоков), а Thread.Start запускает новый управляемый поток.
Фоновый рабочий использует поток из пула потоков. Потоки пула потоков - это обычные потоки, но, поскольку они используются повторно, стоимость их запуска амортизируется. Поскольку стоимость запуска потока может быть значительной, пул потоков идеально подходит для краткосрочных задач.
the big advantage of BackgroundWorker is that you can call GUI code in it's ProgressChanged event handler.