У меня есть (Visual Basic) .Net-программа с несколькими формами, открытыми одновременно, и все формы нуждаются в данных из внешнего источника (вызовы HTTP).Я хотел бы изолировать связь между моей программой и внешним источником в одном потоке, чтобы не было слишком много одновременных HTTP-вызовов, но один поток обрабатывал бы все сообщения.
Проблема в том, что: как различные формы пользовательского интерфейса взаимодействуют с этим потоком HTTP-вызовов и как поток HTTP-вызовов связывается с формой, в которой выполняется процедура?Или Что было бы лучшим решением для этого
Ранее я делал это с помощью BackgroundWorkers следующим образом:
- Поток HTTP-вызовов работает как BackgroundWorker с очередью
- Каждая форма имеет свой собственный BackgroundWorker для обработки собственных вызовов пользовательского интерфейса.
- Событие пользовательского интерфейса отправляется на определенные формы BacgroundWorker (фактически очередь), которая отправляет его в очередь HTTP (HTTP BackgroundWorker)
- HTTP BackgroundWorker выполняет вызов, извлекает данные, записывает их в вызывающий объект и устанавливает флаг для объекта: вызов завершен
- Форма пользовательского интерфейса BackgroundWorker знает, что вызов выполнен и обрабатывает данные изобъект (вне очереди).
Но есть ли лучший способ сделать это?
- Отправить объект запроса работнику HTTP из любой формы, открытой из моей программы
- HTTP-работник отправляет запрос на сервер и заполняет данные для объекта.
- HTTP-работник теперь говорит:equest теперь обрабатывается, вот данные.
- Вызовите метод X в форме Y с данными Z, чтобы показать данные пользователю