Как я могу сообщать о потоках, когда закончите, VB.NET - PullRequest
2 голосов
/ 22 августа 2011

Мне нужно несколько потоков, работающих одновременно с URL-запросами в приложении VB.NET 2010.Как только один из них завершится, он должен продолжить выполнение следующей задачи в списке.

Я новичок в использовании потоков.Поскольку кажется, что я не могу объявить массив BackgroundWorker, я подумал, что у меня будет класс управления, который создает экземпляр класса задачи для каждой задачи, который, в свою очередь, запускает BackgroundWorker в своем конструкторе.Тем не менее, при таком подходе я не уверен, как сообщить результат обратно классу управления по завершении.У меня была смутная идея, что я могу отправить ссылку на объект в классе управления (или на публичное событие, которое я могу вызвать, возможно ли это?), Но затем мне нужно каким-то образом сохранить этот адрес, пока работа не будет выполнена.И я не знаю, как я могу сохранить адрес из ByRef для будущего использования.

Что я хотел бы знать в основном: каков стандартный шаблон для достижения этой цели, как я должен думать, может кто-нибудьуказать на пример?Спасибо!

1 Ответ

2 голосов
/ 22 августа 2011

Поскольку кажется, что я не могу объявить массив BackgroundWorker

Вы можете .И в вашем случае это выглядит так, как будто вы абсолютно должны, поскольку BackgroundWorker предлагает именно ту функциональность, которая вам нужна.

Просто объявите работника в коде, а не через конструктор форм: Конструктор форм неподдержка массивов элементов управления / компонентов.Но в коде такого ограничения не существует.Единственная проблема в том, что вы не можете объявить списки / массивы /… как WithEvents.Вам необходимо зарегистрировать и отменить регистрацию событий вручную во всех экземплярах, используя AddHandler и RemoveHandler.

...