Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Изначально это разные сущности. Одна из них — «железная», вторая — «человеческая». И изначально «железной» недопустимо давать огромный таймаут. Простое решение — дать цикл из мелких «железных» ивентов с таймаутами, внутри проверять «кнопочное» нажатие. 16.05.14 23:15 Число просмотров: 4875
Автор: kstati <Евгений Борисов> Статус: Elderman Отредактировано 16.05.14 23:23 Количество правок: 5
|
псевдокод:
подготовил работу
...
...
время работы = 0
работаю единицу времени (wait... но с таймаутом)
Если работа завершена (по коду возврата) — выход из цикла.
проверяю, была ли нажата кнопка, если да — то прерываюсь.
время работы += таймаут
Если время больше таймаута зависания — прерываюсь
Иначе - цикл повторяется с «работаю единицу времени».
Что бы не вешать всю программу этот кусок логично кинуть в отдельный поток, либо железный таймаут делать мизерным. Второе — хуже — больше проверок на зависание.
|
|
|