Подтвердить что ты не робот

Разница между BackgroundWorker и System.Threading.Thread

В чем разница между созданием aad с использованием BackgroundWorker и созданием потока с использованием System.Threading.Thread?

4b9b3361

Ответ 1

Класс BackgroundWorker в основном абстрагирует Thread создание и мониторинг процесса и дает вам управляемый событиями API для отчета о ходе операции (ProgressChanged) и определить, когда ваш операция завершена (RunWorkerCompleted)...

Одним из наиболее распространенных применений для этого является сохранение оперативного интерфейса Windows, в то время как длительный процесс выполняется в фоновом режиме. Таким образом, в основном, это просто оболочка для System.Threading.Thread, предназначенная для того, чтобы сделать фоновый поток немного проще (как следует из названия!)

Ответ 2

BackgroundWorker на самом деле является оберткой для вызова асинхронного потока через делегаты - с помощью отражателя можно увидеть, что он вызывает методы begin/end invoke соответственно. Это отличается от System.Threading.Thread тем, что использует threadpool, а не запускает новый поток.

Основная причина использования фонового рабочего заключается в том, что он хорошо подключается к приложениям форм Windows.