BackgroundWorker сообщает о проделанной работе - PullRequest
0 голосов
/ 16 февраля 2012

Я работаю над проектом WinForm, используя BackgroundWorker, для процедуры извлечения данных, и мне периодически приходится обновлять индикатор выполнения, который показывает ход выполнения операции.

У меня вопрос: есть ли способ отделить логику извлечения (в моем случае реализованную в разных классах) от логики «отчет о проделанной работе»?

1 Ответ

0 голосов
/ 16 февраля 2012

Вы не можете отделить логику сообщения о ходе выполнения от логики, которая выполняет работу, но вы можете отделить логику, которая сообщает о ходе выполнения, от логики, которая обновляет индикатор выполнения.

Один из способов сделать это - предоставить событие в классе, которое выполняет работу, чтобы сообщить о своем прогрессе заинтересованным сторонам, которые зарегистрировали обработчик событий с логикой, выполняющей эту работу, и периодически вызывать его по мере изменения прогресса.

Ваш фоновый работник затем станет «заинтересованной стороной», зарегистрировавшись для получения этих уведомлений о событиях из логики «сделай работу», и вызовет свой собственный ReportProgress с данными, полученными из события. Таким образом, логика «сделай работу» может остаться в неведении о ReportProgress фонового работника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...