| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Application.Active |
| Автор: stab 11.10.2003, 23:01 |
| Application.Active работает прекрасно, но если приложение подвисло, т.е. какие-то длительные вычисления, то значение этого свойства не обновляется. Есть ли другой способ узнать активно приложение или нет? |
| Автор: <Spawn> 12.10.2003, 05:31 |
| GetForegroundWindow, GetActiveWindow? |
| Автор: var-alex 12.10.2003, 09:17 |
| Вынести вичисления в отдельный поток?? Вызывать application.processmessages в этих вычислениях?? И всё будет обновляться? |
| Автор: stab 12.10.2003, 21:26 | ||
млин, я о чем спрашивал-то? Есть ли другой способ узнать активно приложение или нет? <Spawn>, сенкс, разобрался. |
| Автор: Vit 13.10.2003, 04:57 |
| У меня эта задача стояла особенно остро примерно 4 года назад - представьте примерно 100 програм, работающих на 100 компьютерах. Программы навороченные - хрен-знает-сколько третьесторонних продуктов, коннект с несколькими сетями, серверами и т.п. В общем зависание очень даже возможно, даже не в моём коде, а в коде например репортинговой DLL, или чужого ActiveX, который получает данные с сети и т.п. Причём в определённом проценте случаев вешалась не только программа, но и весь компьютер... Я решил эту проблему так - каждая программа создавала на сетке в зашаренной папке файл нулевой длинны - этот файл я перезаписывал во всех циклах, до и после всех долгоиграющих процессов, для своей программы у меня были точные сведения что реже чем 1 раз в 5 минут такой файл перезаписываться не может - теперь отдельная программы проверяла возраст этого файла - если он оказывался больше 5 минут, то программа или компьютер повис и посылала email в группу сервиса, и пыталась перезагрузить компьютер. Эта система работает очень хорошо до сих пор. |
| Автор: stab 13.10.2003, 05:24 |
| а у меня помимо основного потока есть еще один, он занимается тем что следит за состоянием программы (основного потока), повисла\не повисла, т.д., плюс иногда выводит статистику. Когда юзер работает в другой программе и ему на эту статистику положить не надо ее и показывать. Собственно из-за этого такая проблема и возникла. |
| Автор: iZZi 15.10.2003, 06:51 |
| А как ты реализовал эти потоки? я в этом пока еще не разбирался, но интересно. |