Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Программа работает нестабильно |
Автор: МАХИМ 19.6.2006, 14:26 |
Программа каждые 100 ms делает слепок запущенных процессов и совершает определенные действия. Работа идет с окнами процессов окна ищутся по имени процесса. Работа программы расчитана на три процееса и соответственно на три окна, но даже при работе с одним процессом, причем не сразу, возникают следующие явления: вместо 2 клика, при навигации по папкам диалоговых окон принадлежащих программе, необходимо делать 5-10 кликов; контекстное меню не всегда пропадает...и т.п. странности в плоть до зависании программы при чем не полном, иногда просто нельзя закрыть окно программы иногда программа не может получить фокус(т.е. сама перескакивает на окно процесса с которым работает). Иногда виснет совсем. Но странности проявляются всегда. Помогите разобраться в чем дело.. Если информации мало спрашивайте еще отвечу. |
Автор: Guedda 19.6.2006, 14:30 | ||
Когда Вы научитесь при таком обширном вопросе выкладывать куски кода? Пробовал Дебаггером пройтись? Что происходит? У меня такое подозрение (но, учти, что это подозрение, что в цикле создания слепков и прохода процессов у тебя нет Application.Process Messages) В этом случае есть несколько вариантов: - Использовать Application.PrcessMessages в цикле - Использовать Threads. (см. поиск) |
Автор: МАХИМ 19.6.2006, 14:45 | ||||
Вставлял я их уже и не один раз вот:
Добавлено @ 14:46 Вставлял я их уже и не один раз вот:
Добавлено @ 14:52 Самое обидное что пронрамма функционирует но вот только виснет... ![]() |
Автор: МАХИМ 19.6.2006, 15:01 |
Если работать, с потоками то какую часть кода лучше отправить в отдельный поток. Ту которая отвечает за слепок процессов, ту которая отвечает за поиск окон процесса или ту которая отвечает за конкретное действие пользователя и/или самой программы с этим окном. |
Автор: Alexeis 19.6.2006, 15:23 |
МАХИМ, можно попробовать замерить время выполнения отдельных функций и определить какая из них выполняется дольше всего. |
Автор: МАХИМ 19.6.2006, 15:30 |
а как это осуществить |
Автор: Alexeis 19.6.2006, 15:47 | ||
Добавлено @ 15:48 Результат в мс |
Автор: bems 19.6.2006, 16:01 |
Есть у меня подозрение, что снимок процесса делается с одним из приоритетов режима ядра, а поэтому 10 раз в секунду это слишком часто. У меня самого был такой цикл и сидльнейшее падение быстродействия. Постарайся делать снимки реже. А поиск в результатак слепка - это уже нормально |
Автор: Yanis 20.6.2006, 09:59 |
Ну как же... Сравнивает строки "по содержанию" ![]() |
Автор: МАХИМ 20.6.2006, 10:32 |
я только один раз создавал отдельный поток и это было 1,5 года назад не помню как совсем это делается по форуму читал нно всеже ни как голова не сооброзит можете подсказать конкретно на моем примере как создать и вызывать...буду очень признателен прогу ждут вчера на радостях написал что готова заказчику а проблема вон какая нарисовалась... Добавлено @ 10:34 код естьвыше не забывайте. Если нужно еще что-то спрашивайте.. |
Автор: Sunvas 20.6.2006, 16:12 |
Это понятно. По содержанию чего? |
Автор: МАХИМ 23.6.2006, 09:43 |
Имя файла процесса взятого из слепка с именем файла процесса с которым должна работать программа, чтобы код процедуры выполнялся только при наличии этого процесса в слепке. |