
26.04.2012, 18:35
|
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Не надо останавливать таймер вообще
1. Определяетесь с дискретизацией взаимодействия с пользователем и ставите это значение в таймер. Например, 100мс.
2. Заводите метки времени stepStartPoint и stepPausePoint - время начала текущего шага процесса и время, когда была нажата кнопка паузы
3. Заводите флажок активности процесса, например isProcessing
4. Запускаете таймер, ставите в stepStartPoint стартовое время и isProcessing=true
5. В обработчике таймера проверяете isProcessing==true и разницу текущего времени и stepStartPoint требуемой частоте визуализации шага процесса (например, 2 сек), если не меньше - отрабатываете визуализацию и записываете текущее время в stepStartPoint
6. При нажатии паузы записываете в stepPausePoint текущее время и выставляете isProcessing=false
7. При нажатии резюма корректируете stepStartPoint с учетом текущего времени и stepPausePoint и выставляете isProcessing=true
|