On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост N: 1662
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.10.20 19:13. Заголовок: TsBrowse и MT


никто не занимался вопросом работы tsbrowse в отдельном потоке ?
сделал Rest сервер для обработки запросов и обмена данными между своей системой 1С7 и Bitrix все в консольке, а монитор к этому серверу рисую в гуях.
Через таймер все работает, отслеживается запись нового запроса в базу и tsbrows рисует новую строку не сбивая фокуса в текущей.
А вот при попытке уйти от таймера на поток, столкнулся с блокировкой рабочей области, не понимаю куда можно прописать hb_dbdetach()/hb_dbRequest() в tsbrowse чтобы контролирующий поток успешно смог взять эту область , проверить на наличие изменений и вернуть обратно..

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 24 , стр: 1 2 All [только новые]


администратор




Пост N: 1671
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 28.10.20 19:27. Заголовок: SergKis пишет: Т.е...


SergKis пишет:

 цитата:
Т.е. ты создав окно с пустым тсб уходишь


не совсем.
1) ТСБ создается и функционирует в основном процессе по алиасу "А1"
2) создается поток в котором так же открывается алиас "А1" и зацикливается с задержкой sleep
поскольку алиасы разделены потоком, они друг друга не видят и не мешают , а ТСБ работает по имени не зная где он в конкретный момент ( в основном процессе или в потоке )
3) в цикле потока пока отслеживается появление новых записей в базе и нужно ли это отображать на ТСБ. если нужно то в потоке идет корректировка ::nLen и дорисовка строки . При этом фокус ввода на самом ТСБ визуально не меняется и не моргает. Технически даже в основном процессе может выполняться редактирование ячейки и это не помешает потоку дорисовать строку.
мютексы пока не использовал, т.к. нет разделяемого ресурса ( да и не задать его в ТСБ нет такого места где у ТСБ режим ожидания ) , но возможно появится по мере усложнения логики.

главное опробовал механизм работы с ТСБ и одним именем алиаса

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3494
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.10.20 21:04. Заголовок: Haz пишет 3) в цикле..


Haz пишет
 цитата:
3) в цикле потока пока отслеживается появление новых записей в базе и нужно ли это отображать на ТСБ. если нужно то в потоке идет корректировка ::nLen и дорисовка строки


Т.е. ты переносишь изменения в основной алиас по oBrw и меняешь :nLen ?
Или в потоке с тем же алиасом весь отбор показываешь, синхронизируя по тек. записи ?
Это место не очень понял.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1672
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 28.10.20 21:39. Заголовок: SergKis пишет: Т.е...


SergKis пишет:

 цитата:
Т.е. ты переносишь изменения в основной алиас по oBrw и меняешь :nLen ?



база пополняется новыми записями из консольного сервера.
монитор и настройки сделаны в гуи. Простейший монитор это окошко и тсб на нем, но нужно постоянно обновлять чтобы видеть новую статистику. Поэтому решил обновление отдать потоку.
В потоке анализируется появление новых записей и есть ли место в бровсе где показать новую запись, если и то и то есть, поток пересчитывает ::nLen и рисует строчку в ТСБ. Визуально это выглядит примерно так
В бровсе 3 строки , курсор на строке 2 за курсором еще одна и дальше пусто ( всего пусть помещается 20 ). В какой-то момент курсор по прежнему на строке 2 , но появляется строка 4 , затем 5. При этом можно осуществлять навигацию по ТСБ и это не мешает появлению новых строк. Когда будут заполнены все 20 строк , поток работает в холостую и не рисует больше ничего. Пока сделано так.
Изменения в основной алиас не переношу , они там и так есть т.к база в SHARED , поток просто мониторит нужно ли дорисовать строчку. Как вариант - совместная работа, курсор на строке 2 ( или редактируешь ее ) и в реальном видишь как меняются ячейки в других строках ( те что меняют другие пользователи )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3495
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.10.20 22:43. Заголовок: Haz пишет база попол..


Haz пишет
 цитата:
база пополняется новыми записями из консольного сервера.


Теперь понял, у тебя 3и источника. Но наверно, можно обойтись одним потоком в дальнейшем.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 24 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 242
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет