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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2016, 11:59   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Проблемка отработки потока нескольких нажатий ЛКМ

Программа ( назовем ее принимающей клики) по таймеру- 1сек опрашивает сервер. За 1 раз может получить от 0 до нескольких координат для кликания ЛКМ.
Для отработки клика используется Sleep(100); перед нажатием, Sleep(100); после нажатия и еще Sleep(300);

На сервер координаты кликов приходят от другой программы delphi 7. Я проверял, что даже при высокой частоте кликов от сигнальной ( буду ее так называть, программа которая посылает координаты кликов на сервер) с частотой порядка 0.5 сек принимающая программа получает координаты всех кликов.

Получается, если не учитывать сами алгоритмы, то отработка 1 клика занимает примерно пол секунды.

Проблема в том что реально отрабатываются не все клики, если частота кликов высокая.

Несколько вопросов:
1) Если таймер 1 раз в секунду, но в нем получается суммарная задержка вместе с Sleep() превышает 1 сек, то новая итерация таймера не начнется пока не отработают все алгоритмы и Sleep() в текущей итерации? ( т.е. тут врятли может быть причина?)
2)В чем может крыться отработка не всех кликов?

Последний раз редактировалось Illusiony; 07.08.2016 в 12:08.
Illusiony вне форума Ответить с цитированием
Старый 07.08.2016, 13:18   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Делфийский таймер синхронный, т.е. сообщения становятся в очередь и может происходить их объединение, другими словами утрата, если время выполнения превышает интервал таймера
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2016, 13:42   #3
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Делфийский таймер синхронный, т.е. сообщения становятся в очередь и может происходить их объединение, другими словами утрата, если время выполнения превышает интервал таймера
В смысле, если у меня по таймеру раз в сек приходит запрос с 3мя кликами, которые должны затратить около 1.5 секунды, как дальше будут развиваться события, если например при следующем запросе к серверу за новыми кликами будет еще 3 клика?
Объединение и утрата две разные вещи. С объединением вроде должно все норм быть, а вот утрата как происходит?
Illusiony вне форума Ответить с цитированием
Старый 07.08.2016, 14:02   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Объединение и утрата две разные вещи
Не-а. Вместо двух раз отработает раз - вот и утрата, к примеру за минуту при интервале 1 сек отработает всего 30 раз вместо 60
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2016, 14:08   #5
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Да, но все действия в запущенных итерациях все равно должны отработать полностью?
Да логично, что за 1 минуту если внутри таймера действия были больше чем интервал таймера, то и кол итераций в минуту будет меньше чем предпологалось.
Illusiony вне форума Ответить с цитированием
Старый 07.08.2016, 14:10   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А sleep обязателен?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2016, 14:15   #7
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А sleep обязателен?
без него программа по которой я кликаю просто не успеет отработать нужные действия+ в этой программе( назовем ее внешней) есть некоторые анимации, которые могут длится весьма долго. Кстати я проверял прохождение кликов лишь по результату действий в этой внешней программе, это как бы не полностью достоверные данные о реальных клика. Нужно мне сделать програмку которая отследит реальные нажатия кнопок.
Сейчас займусь этим.
Illusiony вне форума Ответить с цитированием
Старый 07.08.2016, 16:45   #8
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Протестил. Оказалось, что абсолютно все клики проходят. Получается что проблема во внешней программе - длительности ее анимаций.
В общем вопрос тогда совсем в другом. Спасибо за внимание.
Illusiony вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Как записать результат отработки формы в файл? αλεχ11 C# (си шарп) 3 01.06.2014 17:27
Непонятный алгоритм отработки функций Jopses JavaScript, Ajax 1 18.02.2013 09:21
Запуск скрипта Python и ожидание его отработки Stilet Win Api 7 21.11.2012 14:59
Обработка нескольких нажатий клавиатуры и отрисовка объекта отдельно! Lorem Помощь студентам 0 02.01.2012 18:49