Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2009, 21:05   #1
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию COM, TThread, обращение по таймеру

Понимаю, что вопрос без конкретики и исходников - это не очень корректно. Но просто возможности задать его с исходниками из-за объема и логики - нет возможности. Но может быть кто-то подскажет что и по общему описанию?

Есть поток (TThread), в котором инициируется связь с COM-объектом. Возникла такая задача - иногда в процессе работы делать обработки по таймеру. То есть в потоке создаем таймер (и нет разницы - вешать его и его обработчик на этот поток или на основной), по таймеру - дергаем метод потока (даже и через Synchronize), где вызывается метод COM-объекта. Имеем "Разрушительный сбой". Если дергать не метод, а читать значение поля COM-объекта, то все нормально.

Ясно, что в контексте Execute что-то дергать у потока еще - не оч хорошо. Но поток уже точно крутится по пустому циклу While not Terminated. Попробовали в обработчике таймера делать Suspend - Обработка - Resume - та же петрушка (можно бы на этом пустом цикле ловить требуемое время, но в контексте общей задачи нет все же полной уверенности, что уже дошли до требуемого пустого цикла).

Попробовали BMDThread и ставить дополнительные обращения к COM-объекту в некоторую очередь, которую дергать на OnUpdate - то же самое ("Разрушительный сбой"), да и есть еще сильное сомение, что связь с COM-объектом идет в дочернем потоке (сам BMDThread - это же не поток, а TComponent-обертка над реальным потоком).

Есть у кого мысли на тему - как дернуть метод COM-объекта по таймеру?
Антон Ю.Б. вне форума Ответить с цитированием
Старый 17.02.2009, 05:44   #2
FANATID
Пользователь
 
Регистрация: 12.02.2009
Сообщений: 62
По умолчанию

sleep не пробовали делать в потоке?
FANATID вне форума Ответить с цитированием
Старый 17.02.2009, 09:23   #3
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

FANATID, пробовали. Просто нужен именно таймер
Антон Ю.Б. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TThread в С++ Builder alun C++ Builder 7 02.06.2010 21:55
Автосохранения по таймеру ScreN Общие вопросы Delphi 13 09.01.2009 18:49
Visual Basic, рисование по таймеру Arion Помощь студентам 5 21.05.2008 12:42
Нечто подобное таймеру Артэс Общие вопросы C/C++ 8 11.02.2008 19:19
Вызов функции по таймеру Lexicss Общие вопросы Delphi 4 30.05.2007 22:47