|
Вывод данных на форму в режиме клиент-сервер | ☑ | ||
---|---|---|---|---|
0
kors_
14.02.20
✎
17:24
|
Задача, наверное, банальная и простая, но всё же.
Предположим. Есть форма, на ней одна кнопка. По команде с клиента вызывается серверная процедура. Перед началом выполнения серверной процедуры, нужно произвести действия на клиенте - например, показать декорацию формы и вывести сообщение. После выполнения - скрыть. |
|||
1
acht
14.02.20
✎
17:25
|
И?
|
|||
2
kors_
14.02.20
✎
17:27
|
(1) действия на клиенте (все) выполняются после завершения серверной процедуры и возвращения на клиент. то есть и то, что нужно "до" и то, что нужно "после".
|
|||
3
acht
14.02.20
✎
17:30
|
Кнопка отрисовывает декорацию и ставит обработчик ожидания. Обработчик вызывает сервер, после возвращения управления отрисовывает нужное.
|
|||
4
Лефмихалыч
14.02.20
✎
17:33
|
&НаКЛиенте
Процедура онКнопка(кнопка) ПоказатьХернюНаКлиенте(); ВызватьСервернуюПроцедуру(); СкрытьХЕрнюНаКлиенте(); КОнецПроцедуры |
|||
5
acht
14.02.20
✎
17:35
|
(2) Они выполняются в нужном порядке. Только не отрисовываются до окончания серверного вызова. Чтобы разорвать поток и обеспечить отрисовку - подключают обработчик ожидания на минимальный интервал.
|
|||
6
1Сергей
14.02.20
✎
17:43
|
(4) +1
|
|||
7
eTmy
14.02.20
✎
17:58
|
(3) это пять
|
|||
8
fisher
14.02.20
✎
18:03
|
(5) Не пробовал, но возможно для разрыва потока и отрисовки будет достаточно чего-то вроде ВыполнитьОбработкуОповещения(). Все красивше, чем обработчик ожидания.
|
|||
9
kors_
14.02.20
✎
18:10
|
(4) (6) увы, но нет
(5) (8) обработчик ожидания для вызова клиентской процедуры перед серверной? Не разъясните чуть подробнее? Спасибо |
|||
10
kors_
14.02.20
✎
18:13
|
В общем да, порядок условно понятен - при вызове 3 серверных процедур отрисовка действительно происходит после 1. Но как это теперь написать, чтобы глаза от своего же кода выпадали. И правильно ли вообще так делать...
|
|||
11
fisher
14.02.20
✎
18:22
|
(10) Не очень правильно. Синхронный серверный вызов все равно "завесит" клиента и толку от дополнительных телодвижений будет мало. Принято длительные серверные вызовы делать фоновым заданием. Тогда мало того что на клиенте можно отобразить прогресс, клиент может во время его выполнения переключиться на другую работу. В БСП для этого целая подсистема, а на инфостарте - куча статей по использованию.
|
|||
12
lodger
14.02.20
✎
18:25
|
||||
13
kors_
14.02.20
✎
18:26
|
(11) понятно, а если заведомо известно, что обработчик выполнится за 5-10 секунд - есть смысл вот так заморачиваться? Или в любом случае правильнее делать именно так?
|
|||
14
fisher
14.02.20
✎
18:36
|
(13) Оно-то правильнее, но стоит ли овчинка выделки - решать вам. Скажу так - либо вообще не заморачиваться, либо уж через фоновое.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |