Автор | Сообщение |
|
| |
Пост N: 1662
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.10.20 19:13. Заголовок: TsBrowse и MT
никто не занимался вопросом работы tsbrowse в отдельном потоке ? сделал Rest сервер для обработки запросов и обмена данными между своей системой 1С7 и Bitrix все в консольке, а монитор к этому серверу рисую в гуях. Через таймер все работает, отслеживается запись нового запроса в базу и tsbrows рисует новую строку не сбивая фокуса в текущей. А вот при попытке уйти от таймера на поток, столкнулся с блокировкой рабочей области, не понимаю куда можно прописать hb_dbdetach()/hb_dbRequest() в tsbrowse чтобы контролирующий поток успешно смог взять эту область , проверить на наличие изменений и вернуть обратно..
|
|
|
Ответов - 24
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 1671
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.10.20 19:27. Заголовок: SergKis пишет: Т.е...
SergKis пишет: цитата: | Т.е. ты создав окно с пустым тсб уходишь |
| не совсем. 1) ТСБ создается и функционирует в основном процессе по алиасу "А1" 2) создается поток в котором так же открывается алиас "А1" и зацикливается с задержкой sleep поскольку алиасы разделены потоком, они друг друга не видят и не мешают , а ТСБ работает по имени не зная где он в конкретный момент ( в основном процессе или в потоке ) 3) в цикле потока пока отслеживается появление новых записей в базе и нужно ли это отображать на ТСБ. если нужно то в потоке идет корректировка ::nLen и дорисовка строки . При этом фокус ввода на самом ТСБ визуально не меняется и не моргает. Технически даже в основном процессе может выполняться редактирование ячейки и это не помешает потоку дорисовать строку. мютексы пока не использовал, т.к. нет разделяемого ресурса ( да и не задать его в ТСБ нет такого места где у ТСБ режим ожидания ) , но возможно появится по мере усложнения логики. главное опробовал механизм работы с ТСБ и одним именем алиаса
|
|
|
|
| постоянный участник
|
Пост N: 3494
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.10.20 21:04. Заголовок: Haz пишет 3) в цикле..
Haz пишет цитата: | 3) в цикле потока пока отслеживается появление новых записей в базе и нужно ли это отображать на ТСБ. если нужно то в потоке идет корректировка ::nLen и дорисовка строки |
| Т.е. ты переносишь изменения в основной алиас по oBrw и меняешь :nLen ? Или в потоке с тем же алиасом весь отбор показываешь, синхронизируя по тек. записи ? Это место не очень понял.
|
|
|
|
| |
Пост N: 1672
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.10.20 21:39. Заголовок: SergKis пишет: Т.е...
SergKis пишет: цитата: | Т.е. ты переносишь изменения в основной алиас по oBrw и меняешь :nLen ? |
| база пополняется новыми записями из консольного сервера. монитор и настройки сделаны в гуи. Простейший монитор это окошко и тсб на нем, но нужно постоянно обновлять чтобы видеть новую статистику. Поэтому решил обновление отдать потоку. В потоке анализируется появление новых записей и есть ли место в бровсе где показать новую запись, если и то и то есть, поток пересчитывает ::nLen и рисует строчку в ТСБ. Визуально это выглядит примерно так В бровсе 3 строки , курсор на строке 2 за курсором еще одна и дальше пусто ( всего пусть помещается 20 ). В какой-то момент курсор по прежнему на строке 2 , но появляется строка 4 , затем 5. При этом можно осуществлять навигацию по ТСБ и это не мешает появлению новых строк. Когда будут заполнены все 20 строк , поток работает в холостую и не рисует больше ничего. Пока сделано так. Изменения в основной алиас не переношу , они там и так есть т.к база в SHARED , поток просто мониторит нужно ли дорисовать строчку. Как вариант - совместная работа, курсор на строке 2 ( или редактируешь ее ) и в реальном видишь как меняются ячейки в других строках ( те что меняют другие пользователи )
|
|
|
|
| постоянный участник
|
Пост N: 3495
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.10.20 22:43. Заголовок: Haz пишет база попол..
Haz пишет цитата: | база пополняется новыми записями из консольного сервера. |
| Теперь понял, у тебя 3и источника. Но наверно, можно обойтись одним потоком в дальнейшем.
|
|
|
Ответов - 24
, стр:
1
2
All
[только новые]
|
|