Как заставить фонового работника сообщать больше, чем просто int? - PullRequest
0 голосов
/ 27 сентября 2011

Я хочу, чтобы фоновый работник отправил некоторую пользовательскую информацию обработчику событий ProgressChanged, но, похоже, все, что он может отправить, это int.

Есть ли способ обойти это?

Спасибо

Ответы [ 3 ]

3 голосов
/ 27 сентября 2011

Используйте параметр UserState.

2 голосов
/ 27 сентября 2011

ReportProgress имеет перегруженный метод, который принимает объект UserState, который может быть любым объектом. Вы можете передать все, что наследует объектный класс, а затем проанализировать его в обработчике событий ProgressChanged.

http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripprogressbar.aspx

0 голосов
/ 27 сентября 2011

Другой подход, с которым я добился успеха, - это создание собственного класса Background Worker с некоторыми дополнительными свойствами.Во время работы с обработчиком DOWORK в фоновом режиме, когда я делаю что-то, я устанавливаю другие свойства для объекта ... int, string, другие объекты и т. Д. Затем запускаю ReportProgress с любым процентом, с которым я имею дело...

Поскольку фоновый рабочий передается тому, кто прослушивает обратную связь, вы можете прочитать значения свойств фонового рабочего с помощью команды "get / set"

...