![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приостановка приложения
Burmistroff © (2002-01-08 23:56:00)Подскажите пожалуйста, как можно приостановить работу приложения (с последующим возобновлением)? Есть идея заморозить все thread"ы процесса, но так ли это правильно?
Burmistroff (2002-01-09 13:55:00) [1]> Кострюков Сергей
Имелось ввиду чужое приложение ;)
Алексей Петров (2002-01-09 10:11:00) [2]Заморозка всех thread-ов и есть приостановка приложения (кроме thread-ов выполняться больше там не чему). Но есть некоторая опасность, что в момент остановки процесс захватил какой нибудь ресурс (ну Mutex, например), тогда он будет его держать все время, пока остановлен...
Если процесс свой - лучше всего сделать в нем функцию "Suspend", доступную из вне. А в этой функции будет для каждого thread-а выставляться флаг: "зделай себе suspend, как только сможешь".
Нужно правда еще обыграть ситуацию с уже заSuspend-еными потоками, что-бы их при разморозке не запустить вопреки логике программы.
Кострюков Сергей (2002-01-09 00:05:00) [3]Для заморозки приложения на некоторое время сделай процедуру, которая:
1. Спросит текущее время процедурой Now;
2. Процедурой DecodeDate и DecodeTime разобьет это на отденьные переменные (минуты, секунды, часы,...);
3. К этим значениям прибавишь сколько надо времени (напр
Min = Min + 1 // Задержаться 1 минуту)
4. поставить цикл, который будет спрашивать время и сравнивать его с существующим, пока существующее не станет более поздним!
Все!!! Кодировать сам будешь!