Вверх ↑
Ответов: 4620
Рейтинг: 746
#1: 2021-02-11 12:16:04 ЛС | профиль | цитата
MBO писал(а):
Или http запрос тоже лучше не прерывать?
Ну, такая возможность предусмотрена (метод doAbort), поэтому если не будет работать - сообщай.

Более важный вопрос: а зачем перед тем как запустить новый запрос, делать doAbort предыдущего (на одном и том же Hub)? То-есть, предполагается что если запрос не был завершен перед поступлением нового - то "ну его нафиг, поезд ушел, всё убиваем-отменяем и начинаем следующий запрос"? А если временно сеть просела или сервер немного дольше отвечал - результаты запроса неинтересны? Тогда для таких случаев есть свойства таймаутов.

А правильный способ беспрерывного (циклического) посылания запросов я выше указал. На каждой итерации Thread.onExec выбирается из списка/генерируется следующий запрос и выполняется. Можно применить и Thread.FastStop=True (однократное срабатывание onExec), но на выходе из потока ставится перебор списка (если таковой есть) с параметрами запроса, которые последовательно подаются на HTTPClient.

Кстати, если сделать doAbort, а потом сразу же попытаться запустить новый поток - то предыдущий может ещё не успеть завершиться и новый не будет запущен (при Thread.BusyEvent=Ignore). Вероятно, поэтому было применено Thread.BusyEvent=Restart. Что подтверждает неверную логику.
карма: 26

0
Редактировалось 3 раз(а), последний 2021-02-11 12:23:00