BackgroundWorker явно поддерживает маршалинг в поток пользовательского интерфейса.Вы должны использовать это, хотя, вызовите его метод ReportProgress ().Несмотря на то, что вы оптимизированы для составления отчетов о прогрессе, у вас нет , чтобы использовать его для этого.Есть перегрузка, которая принимает объект, вы можете передать все, что захотите.Обработчик события получает его как значение e.UserState.Оттуда вы можете использовать этот объект напрямую или использовать его для повторного вызова другого набора событий.
Будьте осторожны с требованиями безопасности потоков для этого объекта.Работник продолжает работать и не каким-либо образом синхронизирован с выполнением обработчика событий ProgressChanged.Так что больше не следует обновлять объект.Лучше всего создать его новый экземпляр после вызова ReportProgress ().