Как изменить класс .net BackgroundWorker, чтобы он вызывал пользовательское событие после завершения метода - PullRequest
2 голосов
/ 17 ноября 2011

У меня есть BackgroundWorker в программе vb.net, которая выполняет длинную процедуру импорта данных.Я хочу изменить его метод RunWorkerAsync, чтобы он запускал пользовательское событие по завершении метода.(Так что метод в автоматизированном процессе может ответить на событие и возобновить свою работу).В некотором смысле я хочу «расширить» метод RunWorkerAsync, чтобы добавить дополнительную строку кода - но я не могу «увидеть» код в методе (просто добавить строку, вызывающую событие), потому что BackgroundWorker является классом MSDNот Microsoft.

Единственное решение, о котором я могу подумать, - это «обернуть» фоновый рабочий класс в оболочку, которая вызывает метод .RunWorkerAsync, а затем вызывает событие.

Public sub wrapperMethod()
    myBackgroundWorker.RunWorkerAsync()
    raise customEvent
end sub

Можно ли использовать шаблон проектирования?Простой способ решить эту проблему с помощью языка .net?

PS: К сожалению, я автоматизирую некое устаревшее программное обеспечение, и фоновый работник используется во многих местах, поэтому обертывание фонового приложения будет немного трудоемким и можетоткрытые ошибки

1 Ответ

7 голосов
/ 17 ноября 2011

«В некотором смысле я хочу« расширить »метод RunWorkerAsync, чтобы добавить дополнительную строку кода»

Нажмите на событие RunWorkerComplete и используйте его как «повышение customEvent», вот пример для MSDN:

Событие фонового рабочего RunWorkerCompleted

...