В чем разница между созданием aad с использованием BackgroundWorker и созданием потока с использованием System.Threading.Thread?
Разница между BackgroundWorker и System.Threading.Thread
Ответ 1
Класс BackgroundWorker в основном абстрагирует Thread создание и мониторинг процесса и дает вам управляемый событиями API для отчета о ходе операции (ProgressChanged) и определить, когда ваш операция завершена (RunWorkerCompleted)...
Одним из наиболее распространенных применений для этого является сохранение оперативного интерфейса Windows, в то время как длительный процесс выполняется в фоновом режиме. Таким образом, в основном, это просто оболочка для System.Threading.Thread, предназначенная для того, чтобы сделать фоновый поток немного проще (как следует из названия!)
Ответ 2
BackgroundWorker
на самом деле является оберткой для вызова асинхронного потока через делегаты - с помощью отражателя можно увидеть, что он вызывает методы begin/end invoke соответственно. Это отличается от System.Threading.Thread
тем, что использует threadpool, а не запускает новый поток.
Основная причина использования фонового рабочего заключается в том, что он хорошо подключается к приложениям форм Windows.