Обмен сообщениями между формами пользовательского интерфейса и рабочим потоком - PullRequest
0 голосов
/ 31 января 2019

У меня есть (Visual Basic) .Net-программа с несколькими формами, открытыми одновременно, и все формы нуждаются в данных из внешнего источника (вызовы HTTP).Я хотел бы изолировать связь между моей программой и внешним источником в одном потоке, чтобы не было слишком много одновременных HTTP-вызовов, но один поток обрабатывал бы все сообщения.

Проблема в том, что: как различные формы пользовательского интерфейса взаимодействуют с этим потоком HTTP-вызовов и как поток HTTP-вызовов связывается с формой, в которой выполняется процедура?Или Что было бы лучшим решением для этого

Ранее я делал это с помощью BackgroundWorkers следующим образом:

  1. Поток HTTP-вызовов работает как BackgroundWorker с очередью
  2. Каждая форма имеет свой собственный BackgroundWorker для обработки собственных вызовов пользовательского интерфейса.
  3. Событие пользовательского интерфейса отправляется на определенные формы BacgroundWorker (фактически очередь), которая отправляет его в очередь HTTP (HTTP BackgroundWorker)
  4. HTTP BackgroundWorker выполняет вызов, извлекает данные, записывает их в вызывающий объект и устанавливает флаг для объекта: вызов завершен
  5. Форма пользовательского интерфейса BackgroundWorker знает, что вызов выполнен и обрабатывает данные изобъект (вне очереди).

Но есть ли лучший способ сделать это?

  1. Отправить объект запроса работнику HTTP из любой формы, открытой из моей программы
  2. HTTP-работник отправляет запрос на сервер и заполняет данные для объекта.
  3. HTTP-работник теперь говорит:equest теперь обрабатывается, вот данные.
  4. Вызовите метод X в форме Y с данными Z, чтобы показать данные пользователю
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...