Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

TThread   Найти похожие ветки 

 
Flint ©   (2003-07-07 12:51) [0]

Здравствуйте! у меня такая ситуация:
1) есть поток который вычитывает данные из СОМ-порта
2) есть класс-оболочка для управления этим потоком
3) по приходу данных поток отдает оболочке данные через обработчик события OnNewData
4) далее класс-оболочка отдает данные в приложение тоже через обработчик события
Вопрос: как сделать этот процесс асинхронным, чтобы класс-оболочка не ждал когда в приложении обработаются данные (это может быть достаточно длительное время), а отпускал обработчик ?

P.S. У меня пока реализованно через PostMessage в самом приложении, но хотелось бы реализовать это в классе-оболочке.


 
Digitman ©   (2003-07-07 13:45) [1]

В классе-оболочке реализуй
- очередь данных на обработку, например, на базе TThreadList;
- некий метод GetQueueEntry(), который будет выбирать из головы очереди данные; в хвост очереди данные будут поступать в событии OnNewData(), которое обрабатывает класс-оболочка, вызывая там некий метод PutQueueEntry().

Кодовый поток, обрабатывающий событие класса-оболочки, будет тем самым получать извещения о непустой очереди и, вызвав метод GetQueueEntry(), получать очер.элемент для асинхр.обработки.

Очередь же будет блокирована лишь на краткие моменты : запись в хвост и чтение из головы.



Страницы: 1 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
1-67866
Lime
2003-07-08 05:23
2003.07.21
Анализ байтов, содержащихся в файле


3-67678
Jackal22
2003-06-26 13:19
2003.07.21
Фильтрация по не полному совпадению строк.


1-67780
AkaSaint
2003-07-08 21:55
2003.07.21
Что значит следующий EOleException :


14-67998
Леприкон
2003-07-04 07:22
2003.07.21
Delphi Direct


14-68025
_Bob_
2003-06-27 14:26
2003.07.21
Забыл пароль Администраторский пароль на XP