|
Как можно обновлять строку состояния?
| ☑ |
0
Garry1010
18.12.13
✎
10:49
|
Давно уже висит один вопрос... Пробовал придумать через ФоновыеЗадания или через ОбработчикОжидания - что-то не вышло.
Суть такая: через COM-объект запускается выполнение серии достаточно длительных операций - при запуске каждой операции, конечно, в строку состояния выдаётся информация, но пока идёт обработка в COM-соединении переключение на программу выдаёт вид зависания (что естественно). Так вот хочется, чтобы что-то в фоне как-то обновляло строку состояния.
Обработчик ожидания срабатывает только после того, как управление выходит из COM-соединения. А фоновые задания, как я понимаю, вообще не имеют доступа к окну запустившей их программы.
Кто-то может что-то предложить для решения этого вопроса?
|
|
1
Defender aka LINN
18.12.13
✎
10:50
|
Смириться
|
|
2
Garry1010
18.12.13
✎
11:16
|
(1) И всё? :((
|
|
3
Рэйв
18.12.13
✎
11:21
|
Запускай обработчик СOM в цикле на стороне вывывающей базы и формируй строку локадльно
|
|
4
Garry1010
18.12.13
✎
11:45
|
(3) Не понял. Какую строку - строку состояния? Всё равно не уловил суть...
|
|
5
alexei366
18.12.13
✎
11:46
|
(0) Ну можно заморочиться конеш: создать регистр сведений с измерением уник идентификатор при вызове из формы серверной процедуры создать запись в нем с новым идентификатором, вызвать фоновое передая ему наш уник инд и меняешь реквизить записи регистра (к примеру процент выполнения), а на клиенте запускаешь обработчик ожидания где постоянно обращаешься к серверу и вытаскиваешь статус по нашему уник ид и выводишь пользователю (можно сделать чтоб фоновое по завершению удаляла запись, а на клиенте при отсуствии записи выводить готово, или же с клиента если уже завершенно удалять запись)
|
|
6
Garry1010
18.12.13
✎
12:17
|
(5) Не выйдет, я же проверил (см. выше) работу обработчика ожидания. Он срабатывает только когда клиента отпускает COM-соединение - пока оно работает ожидалка не вызывается. Как и описано в документации, кстати.
|
|
7
alexei366
18.12.13
✎
15:09
|
(6) Так ты запусти из клиента фоновое задание, а уже в фоновом COM запускай. Если ты с клиента (или с вызванной серверной процедурой из клиента) COM запускаешь то естественно пока управление будет у запущенной процедуры
|
|