|
|
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
Привет всем! Есть такая задача. В приложении нужно периодически скажем раз в минуту выполнять некий запрос, и при определенном результате выполнения запроса сигнализировать о проблеме. Пришло такое решение. Добавляем еще одну кнопку в главное меню приложения. Периодически по таймеру вызываем в отдельном потоке выполнение запроса. Результат возвращаем в НЕЧТО, где при необходимости меняем или цвет кнопки, или картинку на кнопке (второй вариант предпочтительней). Так вот! Возник вопрос - а как же этот самый таймер реализовать? Была идея в качестве объекта-локатора выбрать объект, унаследованный от application manager - наследник pfc_n_cst_appmanager. Там же и как-то привязать таймер. Но вот посмотрел хелп - пишут, что таймер есть только у окна приложения. К окну как-бы привязываться не хочется... А как жеж быть?? Кто может подсказать - как периодически выполнять некие действия в приложении на ПБ? Впринципе наверное можно было бы открыть какое-то невидимое окно, и на него повесить таймер... Но может правильней по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2008, 17:50 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
RTFM Timing object. PB9 ManualTiming is a nonvisual system object that can be used when a Timer event cannot be associated with a window. To use a timing object, create a standard class user object that inherits from the Timing system class, and then create an instance of the inherited timing object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2008, 20:18 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
Я такое делал, результат дейтствий отдельного потока менял иконку (и ToolBarItemText) на кнопке тулбара MDI Frama. C timerом всё очень просто, есть же системный объект timing, от которго наследоваться можно. А про потоки я тут полный implementation постал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2008, 20:18 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
/topic/362331&pg=1#3403750 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2008, 10:56 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
Мда. Ларчик, как говорится, просто открывался :) Не дочитал... Но вот наткнулся на одну неприятность. А как мне в процедуру обработки передать объект транзакций? Чтоб в отдельном потоке выполнялся запрос, а потом его результат можно было передать в основной поток? Когда делаю вот так: Код: plaintext 1. 2. PowerBuilderApplication terminated. Error: Object passed to shared/remote object method is not a nonvisual user object at line... bla-bla-bla когда же вызов выполняю так: Код: plaintext 1. И действительно - Код: plaintext Код: plaintext Единственная мысль, которая приходит - постоянно в потоке открывать/закрывать объект транзакций... Или... Создать объект-контейнер для объекта транзакций?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2008, 21:21 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
какой-то идиотизьм :( Вобщем, с контейнером для объекта транзакций конечно же все прокатило... Но... Почему-то не выполняется запрос :( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Так вот! Эта зараза блин выдает сначала connected, а потом после выполнения запроса (который заканчивается ошибкой) в объекте транзакций находится сообщение об ошибке - transaction not connected... Что бы это могло быть??? Не пойму никак... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2008, 21:48 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
причем, чтоб предвосхитить возможные уточняющие вопросы, скажу, что запрос Код: plaintext 1. 2. ПС: подключаюсь к Ораклу - и там есть системная таблица dual с одной строкой и одним столбцом с определенным значением. Доступна всем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2008, 21:50 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
В каждом потоке надо создавать и соединять свой объект транзакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 00:45 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
Хм... Ну я вроде как соединяю в каждом потоке, но не создаю... Что ж, попробую еще и создавать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 09:52 |
|
||
|
Вопрос про таймер
|
|||
|---|---|---|---|
|
#18+
УРРРААА!!! 18-я весня - громаднейшее спасибо!! Вот как раз до создания объекта транзакций внутри зашаренного объекта я так и не додумался :( До того, чтоб коннектиться именно внутри - было... Но до создания так и не дошел. Были мысли для тестов внутри забить коннекшн с предопределенными параметрами... Но это не круто. ПС: может кому пригодится - натолкнулся еще на один прикол: при обращении к методам глобальных объектов из зашаренного объекта поток уходит в себя и не возвращается... Успешно обошел :) Вобщем, всем спасибо! Вроде бы проблему поборол. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2008, 10:16 |
|
||
|
|

start [/forum/search_topic.php?author=SteelPepper&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 2710ms |
| total: | 2876ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...