Нет *, вам не нужно вызывать в событии BackgroundWorker's ProgressChanged.DoWork запускается в фоновом потоке, но поток, который выполняет код внутри ProgressChanged (и других обработчиков событий в фоновом редакторе), выполняется потоком, создавшим фонового рабочего процесса, который должен быть таким же, как поток, создавший другие элементы управления пользовательского интерфейса.и, следовательно, не требуется никакого вызова
* Сказав это, обратите пристальное внимание на ту часть, где я сказал, что BGW будет запускать событие ProgressChanged, используя поток, который создал BGW.В большинстве случаев это будет поток пользовательского интерфейса. Если вы использовали поток, отличный от потока пользовательского интерфейса, для создания BGW, тогда ДА, потребуется вызов.Создайте BGW в потоке пользовательского интерфейса вместе со всеми другими элементами управления, если вы хотите простой жизни.Для остальной части моего совета я предполагаю, что это то, что вы сделали.
Я не смог точно понять вашу проблему, но помните, что это поток пользовательского интерфейса, который запускает обработчик событий.Если вы отправите этот поток, выполнив какое-то длинное задание или операцию блокировки в рамках ваших усилий по обновлению меток в пользовательском интерфейсе, тогда приложение будет казаться зависшим.Вы должны позволить потоку пользовательского интерфейса завершить код в обработчике событий как можно скорее.Если ему потребуется доступ к данным из длительной или блокирующей операции, либо попросите DoWork рассчитать данные до того, как он увеличит ход, либо используйте другой метод, чтобы избежать блокировки потока пользовательского интерфейса, например шаблон асинхронной задачи
Обратите внимание, что вызывать и блокировать пользовательский интерфейс - это совершенно разные вещи.Элементы управления Windows могут быть доступны только тем потоком, с которым они были созданы.Если другой поток хочет получить доступ к элементу управления, он должен использовать Invoke, чтобы заставить поток пользовательского интерфейса выполнять эту работу.Это совсем не то, что не мешать вашему пользовательскому интерфейсу, используя поток пользовательского интерфейса для чтения 50 гигабайт с медленного сервера, и не использовать что-то, что позволяет быстро вернуться к работе по обработке оконных сообщений и поддержанию отзывчивости приложения.