Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Вт Авг 26 2003 19:52 Заголовок сообщения: Windows Message Queue |
|
|
Уважаемый народ, Некоторая процедура вызывается несколько раз подряд. Иногда процедура не успевает закончить свою работу, прежде чем она будет вызвана снова. Мне нужно, чтобы в таком случае, второй вызов не выполнялся. Надо отслеживать очередь сообщений виндовс, для определения, есть ли в ней уже вызов этой процедуры. Как я могу это реализовать? Windows 98, Delphi 7. |
|
Вернуться к началу |
|
|
Sclis Гость
|
Добавлено: Ср Авг 27 2003 04:43 Заголовок сообщения: Re: Windows Message Queue |
|
|
Не совсем понятно. "процедура" это екзешник или просто отдельный поток? Если екзешник, то проверяешь запущен ли уже такой экземпляр. Не знаю как это в Дельфи делается, но по идее это при регистрации класса окна положено смотреть. Всякая прога, считается, имеет окно (даже если она окна не имеет) - когда она стартует то "регестрирует класс окна". Когда один экземпляр запущен класс не надо регестрировать. Там код наподоби\ если НеСуществуетКлассОкна(ОкноПрограммы) то ЗарегестрироватьКлассОкна(ОкноПрограммы) - вот и надо добавить иначе Выйти; если это просто поток, то в модуле с твоей процедурой ставишь глобальную переменную и инициализируешь ее при запуске процедуры, не забывая обнулить при завершении работы. еще можно почитать книгу Э.Гамма "Паттерны программирования" (я скоро деньги буду требовать за рекламу ) - там есть паттерн "одиночка". Аккурат то о чем ты спрашиваешь. Только то, что ты называешь процедурой там является объектом. То бишь, объект, который будет делать твою процедуру. Или я чего-то недопонял? |
|
Вернуться к началу |
|
|
Вячеслав Гость
|
Добавлено: Ср Авг 27 2003 11:11 Заголовок сообщения: Re: Windows Message Queue |
|
|
Посмотри в сторону потоков , семафоров и пр. Наверное это будет лучшим решением Особенно если работаеш с внешним железом |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Ср Авг 27 2003 20:43 Заголовок сообщения: Аж стыдно стало |
|
|
Application.ProcessMessages, подставленный в нужное место, решил проблему! (Кстати, флаги не помогали) |
|
Вернуться к началу |
|
|
|