Каков наилучший способ обработки событий C # внутри класса контейнера? - PullRequest
0 голосов
/ 27 октября 2019

Я написал класс C # с именем DownloadTask, который запускает событие, когда файл заканчивает загрузку. Я хочу, чтобы несколько DownloadTask классов все хранились в классе контейнера, DownloadTaskManager. DownloadTaskManager содержит List<DownloadTask> tasks объект. Я использую такие методы, как Add(), Remove(), ClearAllTasks() и т. Д. Для взаимодействия с этим списком. Мой вопрос: если бы я хотел, чтобы мой контейнерный класс DownloadTaskManager также отслеживал каждое событие DownloadTask, каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 27 октября 2019

Если под «отслеживать каждое событие загрузки задачи» вы подразумеваете присоединение слушателей к ним:

  • Вы можете добавить событие к задаче перед добавлением, но я думаю, что это не то, что выхотите
  • Вы можете изменить сигнатуру метода Add, доступную из DownloadTaskManager (если у вас его нет, вам следует ее создать), например, Add(string id, DownloadTask task), тогда вы можете создатьметод, подобный RegisterEvent(string id, Action onDownloaded) для добавления определенных обработчиков событий к определенным задачам

Вы должны предоставить внешнему классу DownloadTaskManager способ идентификации конкретных задач, чтобы вы могли сопоставить их внутренне.

...