Показать сообщение отдельно
Старый 26.04.2012, 18:35
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: 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