| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Глючит система при работе программы |
| Автор: Attack 16.9.2012, 17:29 | ||
| Извините за невнятное названия топика, но ничего лучше не придумал. Итак к делу. Набросал программку в 1 функцию(Delphi XE):
Думаю разъяснять тут нечего, код простой, программа просто сверяет кусочек экрана с имеющимся изображением. Так вот, при длительной работе программы, скажем 10000 циклов вся операционная система(Win7) начинает подлагивать, в частности очень медленно начинают прорисовываться окна других программ, также появляется замедленная реакция на клик мышки и прочее. Эти симптомы не пропадают даже если остановить цикл(Button2). И только закрытие программы приводит ОС в норму. Вопрос: из-за чего это происходит? И как этого избежать? |
| Автор: MetalFan 16.9.2012, 17:47 |
А где http://msdn.microsoft.com/en-us/library/ms939760.aspx? Посмотри в ProcessExlporer (от SysInternals, который теперь пренадлежит MS), вкладку Perfomance раздел Handles, уверен, увидишь постоянно увеличивающееся кол-во "занятых" хэндлов GDI. Кстати, более оптимально сравнивать не по пикселям, а по строкам... CompareMem на scanline. Но при условии, что PixelFormat совпадает. |
| Автор: Attack 16.9.2012, 18:04 | ||
| MetalFan, большое спасибо, всё как вы сказали. Количество GDI Handles равнялось числу отработанных циклов. Исправил код, теперь всё работает как нужно:
Также спасибо за подсказку про сравнение по строкам, обязательно посмотрю. |